Java 类java.util.concurrent.Future 实例源码
项目:monarch
文件:MainLauncherJUnitTest.java
@Test
public void testInvokeMainWithMainLauncherWithTwoArgs() throws Exception {
Future<Boolean> future = this.futures.submit(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
Class<?> clazz = MainLauncher.class;
Method mainMethod = clazz.getMethod("main", String[].class);
String[] args = new String[] {launchedClass, "arg0", "arg1"};
mainMethod.invoke(null, new Object[] {args});
return true;
}
});
systemInMock.provideText("\n");
assertTrue(future.get(TIMEOUT_SECONDS, TimeUnit.SECONDS));
assertTrue(flag);
}
项目:EasyTransaction
文件:ReliableMessageMethodExecutor.java
@SuppressWarnings("unchecked")
@Override
public <P extends EasyTransRequest<R,E>,E extends EasyTransExecutor,R extends Serializable> Future<R> execute(final Integer callSeq, final P params) {
MessageRecordContent content = new MessageRecordContent();
content.setParams(params);
content.setCallSeq(callSeq);
transSynchronizer.registerLog(content);
final PublishResult result = new PublishResult();
result.setMessageContentId(content.getcId());
FutureTask<PublishResult> future = new FutureTask<PublishResult>(new Callable<PublishResult>() {
@Override
public PublishResult call() throws Exception {
return result;
}
});
future.run();
return (Future<R>) future;
}
项目:otter-G
文件:GlobalTask.java
public void shutdown() {
running = false;
interrupt();
List<Future> cancelFutures = new ArrayList<Future>();
for (Map.Entry<Long, Future> entry : pendingFuture.entrySet()) {
if (!entry.getValue().isDone()) {
logger.warn("WARN ## Task future processId[{}] canceled!", entry.getKey());
cancelFutures.add(entry.getValue());
}
}
for (Future future : cancelFutures) {
future.cancel(true);
}
pendingFuture.clear();
}
项目:com.zsmartsystems.zigbee
文件:ConBeeFrameHandler.java
/**
* Sends a ConBee request to the NCP and waits for the response. The response is correlated with the request and the
* returned {@link ConBeeFrame} contains the request and response data.
*
* @param transaction
* Request {@link ConBeeTransaction}
* @return response {@link ConBeeFrame}
*/
public ConBeeTransaction sendTransaction(ConBeeTransaction transaction) {
Future<ConBeeFrame> futureResponse = sendRequestAsync(transaction);
if (futureResponse == null) {
logger.debug("Error sending ConBee transaction: Future is null");
return null;
}
try {
futureResponse.get();
return transaction;
} catch (InterruptedException | ExecutionException e) {
logger.debug("Error sending ConBee transaction to listeners: ", e);
}
return null;
}
项目:incubator-netbeans
文件:MetadataModelReadHelper.java
public void run() {
try {
Future<Void> future = model.runReadActionWhenReady(new MetadataModelAction<T, Void>() {
public Void run(T metadata) throws Exception {
state = State.READING_MODEL;
fireChange();
result = action.run(metadata);
state = State.FINISHED;
fireChange();
return null;
}
});
// get any exceptions thrown if the action was run asynchronously
future.get();
} catch (Exception e) {
state = State.FINISHED;
executionException = new ExecutionException(e.getMessage(), e);
fireChange();
}
}
项目:DBus
文件:MetaEventWarningSender.java
public void sendMessage(MetaVersion ver, MetaWrapper newMeta, MetaCompareResult result) {
ControlMessage message = new ControlMessage(System.currentTimeMillis(), ControlType.G_META_SYNC_WARNING.toString(), "dbus-appender");
message.addPayload("datasource", GlobalCache.getDatasource().getDsName());
message.addPayload("schema", ver.getSchema());
message.addPayload("tableId", ver.getTableId());
message.addPayload("table", ver.getTable());
message.addPayload("before", ver.getMeta());
message.addPayload("after", newMeta);
message.addPayload("compare-result", JSON.toJSON(result));
message.addPayload("version", ver.getVersion());
String topic = PropertiesHolder.getProperties(Constants.Properties.CONFIGURE, Constants.ConfigureKey.GLOBAL_EVENT_TOPIC);
ProducerRecord<String, String> record = new ProducerRecord<>(topic, message.getType(), message.toJSONString());
Future<RecordMetadata> future = producer.send(record, (metadata, exception) -> {
if (exception != null) {
logger.error("Send global event error.{}", exception.getMessage());
}
});
try {
future.get(10000, TimeUnit.MILLISECONDS);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
项目:incubator-netbeans
文件:ExecutionServiceTest.java
public void testSimpleRun() throws InterruptedException {
TestProcess process = new TestProcess(0);
TestCallable callable = new TestCallable();
callable.addProcess(process);
ExecutionDescriptor descriptor = new ExecutionDescriptor();
ExecutionService service = ExecutionService.newService(
callable, descriptor, "Test");
Future<Integer> task = service.run();
assertNotNull(task);
process.waitStarted();
process.destroy();
process.waitFor();
assertTrue(process.isFinished());
assertEquals(0, process.exitValue());
}
项目:incubator-netbeans
文件:DocDownloader.java
@NonNull
public static Future<String> download(
@NonNull final URL url,
@NonNull final Callable<Boolean> cancel) {
return RP.submit(()-> {
if (cancel.call()) {
return ""; //NOI18N
}
final ProgressHandle handle = ProgressHandle.createHandle(NbBundle.getMessage(DocDownloader.class, "LBL_DownloadingDoc"));
handle.start();
try {
final ByteArrayOutputStream out = new ByteArrayOutputStream();
try(BufferedInputStream in = new BufferedInputStream(url.openStream())) {
FileUtil.copy(in, out);
}
return cancel.call() ?
"" //NOI18N
: new String(out.toByteArray(),"UTF-8"); //NOI18N
} finally {
handle.finish();
}
});
}
项目:incubator-netbeans
文件:RequestProcessor.java
/**
* {@inheritDoc}
* <p/>
* Executes the given tasks, returning the result of one which has
* completed and cancelling any incomplete tasks.
* @since org.openide.util 8.2
*/
@Override
public <T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException {
Parameters.notNull("tasks", tasks); //NOI18N
CountDownLatch wait = new CountDownLatch(1);
List<Future<T>> result = new ArrayList<Future<T>>(tasks.size());
AtomicReference<T> ref = new AtomicReference<T>();
try {
for (Callable<T> c : tasks) {
if (c == null) {
throw new NullPointerException ("Contains null tasks: " + //NOI18N
tasks);
}
Callable<T> delegate = new WaitableCallable<T>(c, ref, wait);
result.add (submit(delegate));
}
wait.await();
} finally {
for (Future<T> f : result) {
RPFutureTask<?> ft = (RPFutureTask<?>) f;
ft.cancel(true);
}
}
return ref.get();
}
项目:android-deferred
文件:MultiplePromisesTest.java
@Test
public void testFutures() {
final Callable<Integer> callable1 = successCallable(999, 100);
final Callable<String> callable2 = successCallable("HI", 1000);
ExecutorService es = deferredManager.getExecutorService();
Future<Integer> future1 = es.submit(callable1);
Future<String> future2 = es.submit(callable2);
final AtomicInteger doneCount = new AtomicInteger();
deferredManager.when(future1, future2).done(new DoneCallback<MultipleResults>() {
@Override
public void onDone(MultipleResults result) {
Assert.assertEquals(2, result.size());
Assert.assertEquals(999, result.get(0).getResult());
Assert.assertEquals("HI", result.get(1).getResult());
doneCount.incrementAndGet();
}
});
waitForCompletion();
Assert.assertEquals(1, doneCount.get());
}
项目:ibm-cos-sdk-java
文件:TestExecutors.java
public static ExecutorService blocksOnFirstCallFromCallableOfType(final ExecutorService delegate, final Class<? extends Callable> type) {
return new ForwardingExecutorService() {
private boolean firstCall = true;
@Override
protected ExecutorService delegate() {
return delegate;
}
@Override
public <T> Future<T> submit(Callable<T> task) {
if (task.getClass().equals(type) && firstCall) {
firstCall = false;
try {
return Futures.immediateFuture(task.call());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return super.submit(task);
}
};
}
项目:IPPR2016
文件:ProcessServiceImpl.java
@Transactional
@Async
@Override
public Future<List<TaskDTO>> getTasksOfUser(final Long userId) {
final CompletableFuture<List<TaskDTO>> future = new CompletableFuture<>();
final TasksOfUserMessage.Request request = new TasksOfUserMessage.Request(userId);
PatternsCS.ask(userSupervisorActor, request, Global.TIMEOUT).toCompletableFuture()
.whenComplete((msg, exc) -> {
if (exc == null) {
future.complete(((TasksOfUserMessage.Response) msg).getTasks());
} else {
future.completeExceptionally(exc);
}
});
return future;
}
项目:iTAP-controller
文件:RemoteSyncManager.java
/**
* Send a request to the server and generate a future for the
* eventual reply. Note that this call can block if there is no active
* connection while a new connection is re-established or if the maximum
* number of requests is already pending
* @param xid the transaction ID for the request
* @param request the actual request to send
* @return A {@link Future} for the reply message
* @throws InterruptedException
*/
public Future<SyncReply> sendRequest(int xid,
SyncMessage request)
throws RemoteStoreException {
ensureConnected();
RemoteSyncFuture future = new RemoteSyncFuture(xid,
connectionGeneration);
futureMap.put(Integer.valueOf(xid), future);
if (futureMap.size() > MAX_PENDING_REQUESTS) {
synchronized (futureNotify) {
while (futureMap.size() > MAX_PENDING_REQUESTS) {
try {
futureNotify.wait();
} catch (InterruptedException e) {
throw new RemoteStoreException("Could not send request",
e);
}
}
}
}
channel.write(request);
return future;
}
项目:cas-server-4.2.1
文件:JpaTicketRegistryTests.java
@Test
public void verifyConcurrentServiceTicketGeneration() throws Exception {
final TicketGrantingTicket newTgt = newTGT();
addTicketInTransaction(newTgt);
final ExecutorService executor = Executors.newFixedThreadPool(CONCURRENT_SIZE);
try {
final List<ServiceTicketGenerator> generators = new ArrayList<>(CONCURRENT_SIZE);
for (int i = 0; i < CONCURRENT_SIZE; i++) {
generators.add(new ServiceTicketGenerator(newTgt.getId(), this.jpaTicketRegistry, this.txManager));
}
final List<Future<String>> results = executor.invokeAll(generators);
for (final Future<String> result : results) {
assertNotNull(result.get());
}
} catch (final Exception e) {
logger.error("testConcurrentServiceTicketGeneration produced an error", e);
fail("testConcurrentServiceTicketGeneration failed.");
} finally {
executor.shutdownNow();
}
}
项目:JRediClients
文件:RedissonExecutorService.java
private <T> void addListener(final RemotePromise<T> result) {
result.getAddFuture().addListener(new FutureListener<Boolean>() {
@Override
public void operationComplete(io.netty.util.concurrent.Future<Boolean> future) throws Exception {
if (!future.isSuccess()) {
result.tryFailure(future.cause());
return;
}
if (!future.getNow()) {
result.tryFailure(new RejectedExecutionException("Task rejected. ExecutorService is in shutdown state"));
}
}
});
}
项目:java-restclient
文件:DummyClient.java
private Future<Response> executeAsync(ListenableFuture<Response> future, final HTTPCallback<Response> callback) {
Futures.addCallback(future, new FutureCallback<Response>() {
@Override
public void onSuccess(Response response) {
callback.success(response);
}
@Override
public void onFailure(Throwable throwable) {
callback.failure(throwable);
}
});
return callback.getFuture();
}
项目:hekate
文件:BackPressureRequestTest.java
@Test
public void test() throws Exception {
List<Message<String>> requests = new CopyOnWriteArrayList<>();
createChannel(c -> useBackPressure(c)
.withReceiver(requests::add)
).join();
MessagingChannel<String> sender = createChannel(this::useBackPressure).join().get().forRemotes();
// Enforce back pressure on sender.
List<ResponseFuture<String>> futureResponses = requestUpToHighWatermark(sender);
busyWait("requests received", () -> requests.size() == futureResponses.size());
assertBackPressureEnabled(sender);
// Go down to low watermark.
requests.stream().limit(getLowWatermarkBounds()).forEach(r -> r.reply("ok"));
busyWait("responses received", () ->
futureResponses.stream().filter(CompletableFuture::isDone).count() == getLowWatermarkBounds()
);
// Check that new request can be processed.
get(sender.send("last"));
requests.stream().filter(Message::mustReply).forEach(r -> r.reply("ok"));
for (Future<?> future : futureResponses) {
get(future);
}
}
项目:ECFileCache
文件:RedisAccessParallel.java
@Override
public Pair<byte[][], int[]> getChunk(List<Integer> redisIds, String cacheKey, long chunkPos, int chunkSize) throws
ECFileCacheException {
List<DecoratedJedisPool> jedisPools = getJedisPools(redisIds);
byte[][] redisDataArray = new byte[jedisPools.size()][];
CompletionService<Integer> completionService = new ExecutorCompletionService<Integer>(pool);
List<Future<Integer>> futures = new ArrayList<Future<Integer>>();
String field = chunkPos + SEP + chunkSize;
int failCount = 0;
for (int i = 0; i < jedisPools.size(); ++i) {
DecoratedJedisPool jedis = jedisPools.get(i);
if (jedis != null) {
String key = cacheKey + SEP + i;
RedisGetChunk redisGetChunk = new RedisGetChunk(jedis, key, field, redisDataArray, i);
if (!pool.isShutdown()) {
Future<Integer> future = completionService.submit(redisGetChunk);
futures.add(future);
}
} else {
failCount++;
}
}
checkRedisResult(completionService, futures, failCount);
return convertChunk(redisDataArray, chunkSize);
}
项目:openjdk-jdk10
文件:StreamPumper.java
final public Future<Void> process() {
if (!processing.compareAndSet(false, true)) {
throw new IllegalStateException("Can not re-run the processing");
}
Thread t = new Thread(new Runnable() {
@Override
public void run() {
processingTask.run();
}
});
t.setDaemon(true);
t.start();
return processingTask;
}
项目:accumulate
文件:HystrixTest.java
@Test
public void testSynchronous() throws Exception {
//同步调用
System.out.println(new CommandHelloWorld("World").execute());
//异步调用
Future<String> world = new CommandHelloWorld("World").queue();
System.out.println(world.get());
}
项目:voyage
文件:Client.java
public static void send(IServer server1,int f_i) {
Message msg = null;
try {
//由于客户端配置的async="true",我们用异步方式来获取结果,如果是同步方式,直接msg=server1.echoMsg(f_i)即可
server1.echoMsg(f_i);
Future<Message> future = RpcContext.getContext().getFuture();
msg = future.get();
System.out.println("msg:"+msg.getMsg()+","+msg.getData());
} catch(Throwable e) {
e.printStackTrace();
}
}
项目:hashsdn-controller
文件:IdIntsDOMDataTreeLIstener.java
public Future<Void> tryFinishProcessing() {
executorService = Executors.newSingleThreadScheduledExecutor();
final SettableFuture<Void> settableFuture = SettableFuture.create();
scheduledFuture = executorService.scheduleAtFixedRate(new CheckFinishedTask(settableFuture), 0, 1, TimeUnit.SECONDS);
return settableFuture;
}
项目:java-chess
文件:MinimaxAlphaBeta.java
public Move decision(final Board b) {
// get maximum move
final ArrayList<Move> moves = b.getMoves(color);
if(moves.size() == 0)
return null;
Vector<Future<Float>> costs = new Vector<Future<Float>>(moves.size());
costs.setSize(moves.size());
ExecutorService exec = Executors.newFixedThreadPool(moves.size());
try {
for (int i = 0; i < moves.size(); i++) {
final Move move = moves.get(i);
Future<Float> result = exec.submit(new Callable<Float>() {
@Override
public Float call() {
ArrayList<Move> state = new ArrayList<Move>();
state.add(move);
float tmp = minValue(b, state, Float.NEGATIVE_INFINITY, Float.POSITIVE_INFINITY, 1);
return tmp;
}
});
costs.set(i, result);
}
} finally {
exec.shutdown();
}
// max
int maxi = -1;
float max = Float.NEGATIVE_INFINITY;
for(int i = 0; i < moves.size(); i++) {
float cost;
try {
cost = costs.get(i).get();
} catch (Exception e) {
try {
Thread.sleep(300);
} catch (InterruptedException e1) {
}
continue;
}
if(cost >= max) {
if(Math.abs(cost-max) < 0.1) // add a little random element
if(rand.nextBoolean())
continue;
max = cost;
maxi = i;
}
}
return moves.get(maxi);
}
项目:hadoop
文件:TestWebHdfsContentLength.java
@Test
public void testPostOpWithRedirect() {
// POST operation with redirect
Future<String> future1 = contentLengthFuture(redirectResponse);
Future<String> future2 = contentLengthFuture(errResponse);
try {
FSDataOutputStream os = fs.append(p);
os.write(new byte[]{0});
os.close();
Assert.fail();
} catch (IOException ioe) {} // expected
Assert.assertEquals("0", getContentLength(future1));
Assert.assertEquals("chunked", getContentLength(future2));
}
项目:devicehub
文件:DeviceHubClient.java
/**
* Send the device request asynchronously
*
* @param clientDeviceRequest the device request to send
* @return the Future instance that holds the response
*/
public Future<ClientDeviceResponse> sendDeviceRequestAsync(
ClientDeviceRequest clientDeviceRequest) {
return executorService.submit(
new Callable<ClientDeviceResponse>() {
@Override
public ClientDeviceResponse call() {
return sendDeviceRequest(clientDeviceRequest);
}
});
}
项目:elasticsearch_my
文件:SearchWithRejectionsIT.java
public void testOpenContextsAfterRejections() throws InterruptedException {
createIndex("test");
ensureGreen("test");
final int docs = scaledRandomIntBetween(20, 50);
for (int i = 0; i < docs; i++) {
client().prepareIndex("test", "type", Integer.toString(i)).setSource("field", "value").execute().actionGet();
}
IndicesStatsResponse indicesStats = client().admin().indices().prepareStats().execute().actionGet();
assertThat(indicesStats.getTotal().getSearch().getOpenContexts(), equalTo(0L));
refresh();
int numSearches = 10;
Future<SearchResponse>[] responses = new Future[numSearches];
SearchType searchType = randomFrom(SearchType.DEFAULT, SearchType.QUERY_THEN_FETCH, SearchType.DFS_QUERY_THEN_FETCH);
logger.info("search type is {}", searchType);
for (int i = 0; i < numSearches; i++) {
responses[i] = client().prepareSearch()
.setQuery(matchAllQuery())
.setSearchType(searchType)
.execute();
}
for (int i = 0; i < numSearches; i++) {
try {
responses[i].get();
} catch (Exception t) {
}
}
awaitBusy(() -> client().admin().indices().prepareStats().execute().actionGet().getTotal().getSearch().getOpenContexts() == 0, 1, TimeUnit.SECONDS);
indicesStats = client().admin().indices().prepareStats().execute().actionGet();
assertThat(indicesStats.getTotal().getSearch().getOpenContexts(), equalTo(0L));
}
项目:ibm-cos-sdk-java
文件:CompleteMultipartCopy.java
/**
* Collects the Part ETags for initiating the complete multi-part copy
* request. This is blocking as it waits until all the upload part threads
* complete.
*/
private List<PartETag> collectPartETags() {
final List<PartETag> partETags = new ArrayList<PartETag>();
for (Future<PartETag> future : futures) {
try {
partETags.add(future.get());
} catch (Exception e) {
throw new SdkClientException("Unable to copy part: "
+ e.getCause().getMessage(), e.getCause());
}
}
return partETags;
}
项目:EasyTransaction
文件:ExecuteCacheManager.java
public <T> Future<T> cacheCall(Callable<T> compensableCall,Content content){
logCtx.getLogCache().cacheLogList(Arrays.asList(content));
mapCallable.put(compensableCall,new Object[3]);
CompensableCallerWrapper<T> compensableCallWrapper = new CompensableCallerWrapper<T>(compensableCall);
Future<T> future = new ExecuteTriggerByGetFuture<T>(compensableCallWrapper);
return future;
}
项目:hadoop
文件:TestInMemorySCMStore.java
@Test
public void testAddResourceRefAddResourceConcurrency() throws Exception {
startEmptyStore();
final String key = "key1";
final String fileName = "foo.jar";
final String user = "user";
final ApplicationId id = createAppId(1, 1L);
// add the resource and add the resource ref at the same time
ExecutorService exec = Executors.newFixedThreadPool(2);
final CountDownLatch start = new CountDownLatch(1);
Callable<String> addKeyTask = new Callable<String>() {
public String call() throws Exception {
start.await();
return store.addResource(key, fileName);
}
};
Callable<String> addAppIdTask = new Callable<String>() {
public String call() throws Exception {
start.await();
return store.addResourceReference(key,
new SharedCacheResourceReference(id, user));
}
};
Future<String> addAppIdFuture = exec.submit(addAppIdTask);
Future<String> addKeyFuture = exec.submit(addKeyTask);
// start them at the same time
start.countDown();
// get the results
String addKeyResult = addKeyFuture.get();
String addAppIdResult = addAppIdFuture.get();
assertEquals(fileName, addKeyResult);
System.out.println("addAppId() result: " + addAppIdResult);
// it may be null or the fileName depending on the timing
assertTrue(addAppIdResult == null || addAppIdResult.equals(fileName));
exec.shutdown();
}
项目:java-restclient
文件:RestClientAsyncRetryTest.java
@Test(expected = ExecutionException.class)
public void shouldRetryOnMakeResponseException() throws RestException, ExecutionException, InterruptedException {
String url = "http://dummy.com/test";
MockResponse.builder()
.withURL(url)
.withMethod(POST)
.withStatusCode(201)
.withResponseHeader(ContentType.HEADER_NAME, ContentType.TEXT_PLAIN.toString())
.withResponseBody(DummyCallbackProcessor.THROW)
.build();
final AtomicInteger retries = new AtomicInteger();
Future<Response> response = RestClient.getDefault().withRetryStrategy(new RetryStrategy() {
@Override
public RetryResponse shouldRetry(Request req, Response r, Exception e, int rs) {
retries.getAndIncrement();
return new RetryResponse(false, 0);
}
}).asyncPost(url);
LockSupport.parkNanos(2000000);
assertEquals(1, retries.get());
response.get();
}
项目:IPPR2016
文件:EventLogServiceImpl.java
@Async
@Override
public Future<List<EventLoggerDTO>> getEventLogForProcessModelAndSubject(final int processModelId,
final String subject) {
final List<EventLogEntry> results =
eventLogRepository.getEventLogForProcessModelAndSubject(processModelId, subject);
final List<EventLoggerDTO> eventLog = createEventLoggerDTO(results);
return new AsyncResult<List<EventLoggerDTO>>(eventLog);
}
项目:monarch
文件:GMSJoinLeave.java
private <T> List<Future<T>> submitAll(ExecutorService executor,
Collection<? extends Callable<T>> tasks) {
List<Future<T>> result = new ArrayList<Future<T>>(tasks.size());
for (Callable<T> task : tasks) {
result.add(executor.submit(task));
}
return result;
}
项目:Achilles_Android
文件:CpuMonitor.java
private void scheduleCpuUtilizationTask() {
if (executor != null) {
executor.shutdownNow();
executor = null;
}
executor = Executors.newSingleThreadScheduledExecutor();
@SuppressWarnings("unused") // Prevent downstream linter warnings.
Future<?> possiblyIgnoredError = executor.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
cpuUtilizationTask();
}
}, 0, CPU_STAT_SAMPLE_PERIOD_MS, TimeUnit.MILLISECONDS);
}
项目:NEILREN4J
文件:MemcachedManager.java
/**
* 从缓存中获取.
*
* @param keys keys
* @return Map<String, Object>
*/
public Map<String, Object> asyncGetMulti(String[] keys) {
Map<String, Object> map = null;
Future<Map<String, Object>> f = memcachedClient.asyncGetBulk(keys);
try {
map = f.get(SpyMemcachedConstants.DEFAULT_TIMEOUT, SpyMemcachedConstants.DEFAULT_TIMEUNIT);
} catch (Exception e) {
f.cancel(false);
}
return map;
}
项目:hekate
文件:AsyncUtilsTest.java
@Test
public void testGetUninterruptedlyNoInterrupt() throws Exception {
CompletableFuture<String> future = new CompletableFuture<>();
Future<Object> testFuture = runAsync(() ->
AsyncUtils.getUninterruptedly(future)
);
future.complete("something");
assertEquals("something", get(testFuture));
}
项目:shuffleboard
文件:TabHandle.java
private void startDelayedDrag(DragEvent dragEvent) {
Future<?> task = delayedDragService.schedule(
() -> FxUtils.runOnFxThread(tab::onDragOver),
DRAG_FOCUS_DELAY, TimeUnit.MILLISECONDS);
setOnDragExited(__de -> task.cancel(false));
}
项目:endpoint-health
文件:EndPointCheckSchedulerServiceImpl.java
@Override
public void scheduleCheck(final EndPoint endPoint) {
final Future<?> future = scheduledExecutorService.scheduleWithFixedDelay(() -> checkEndPoint(endPoint), 0,
DEFAULT_CHECK_DELAY, TimeUnit.SECONDS);
endPointFutures.put(endPoint, future);
LOGGER.info(String.format("%s scheduled", endPoint));
}
项目:openjdk-jdk10
文件:AbstractExecutorServiceTest.java
/**
* Completed submit(runnable) returns successfully
*/
public void testSubmitRunnable() throws Exception {
ExecutorService e = new DirectExecutorService();
Future<?> future = e.submit(new NoOpRunnable());
future.get();
assertTrue(future.isDone());
}
项目:OSchina_resources_android
文件:LargeImageActivity.java
private void saveToFile() {
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
Toast.makeText(this, R.string.gallery_save_file_not_have_external_storage, Toast.LENGTH_SHORT).show();
return;
}
final Future<File> future = getImageLoader()
.load(mPath)
.downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);
AppOperator.runOnThread(new Runnable() {
@Override
public void run() {
try {
File sourceFile = future.get();
if (sourceFile == null || !sourceFile.exists())
return;
String extension = BitmapUtil.getExtension(sourceFile.getAbsolutePath());
String extDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
.getAbsolutePath() + File.separator + "开源中国";
File extDirFile = new File(extDir);
if (!extDirFile.exists()) {
if (!extDirFile.mkdirs()) {
// If mk dir error
callSaveStatus(false, null);
return;
}
}
final File saveFile = new File(extDirFile, String.format("IMG_%s.%s", System.currentTimeMillis(), extension));
final boolean isSuccess = StreamUtil.copyFile(sourceFile, saveFile);
callSaveStatus(isSuccess, saveFile);
} catch (Exception e) {
e.printStackTrace();
callSaveStatus(false, null);
}
}
});
}
项目:tomcat7
文件:WsWebSocketContainer.java
private static void writeRequest(AsyncChannelWrapper channel, ByteBuffer request,
long timeout) throws TimeoutException, InterruptedException, ExecutionException {
int toWrite = request.limit();
Future<Integer> fWrite = channel.write(request);
Integer thisWrite = fWrite.get(timeout, TimeUnit.MILLISECONDS);
toWrite -= thisWrite.intValue();
while (toWrite > 0) {
fWrite = channel.write(request);
thisWrite = fWrite.get(timeout, TimeUnit.MILLISECONDS);
toWrite -= thisWrite.intValue();
}
}