List of usage examples for com.google.common.util.concurrent ListenableFutureTask create
public static <V> ListenableFutureTask<V> create(Callable<V> callable)
From source file:com.facebook.presto.server.remotetask.RequestErrorTracker.java
public ListenableFuture<?> acquireRequestPermit() { long delayNanos = backoff.getBackoffDelayNanos(); if (delayNanos == 0) { return Futures.immediateFuture(null); }/*from w w w .j av a 2 s . c o m*/ ListenableFutureTask<Object> futureTask = ListenableFutureTask.create(() -> null); scheduledExecutor.schedule(futureTask, delayNanos, NANOSECONDS); return futureTask; }
From source file:com.google.cloud.tools.appengine.experimental.internal.process.CliProcessManager.java
private Future<T> manage() { processStdOut = ListenableFutureTask.create(new Callable<String>() { StringBuilder result = new StringBuilder(""); @Override//from w w w. j a v a 2s.c o m public String call() throws Exception { final Scanner stdOut = new Scanner(process.getInputStream(), "UTF-8"); while (stdOut.hasNextLine() && !Thread.interrupted()) { String line = stdOut.nextLine(); result.append(line); result.append(System.getProperty("line.separator")); } return result.toString(); } }); processStdErr = new FutureTask<Void>(new Callable<Void>() { @Override public Void call() throws Exception { final Scanner stdOut = new Scanner(process.getErrorStream(), "UTF-8"); while (stdOut.hasNextLine() && !Thread.interrupted()) { String line = stdOut.nextLine(); outputHandler.handleLine(line); } return null; } }); // processMain does some special handling to get the result of the stdout and store // exit code and result in a single return object processMain = ListenableFutureTask.create(new Callable<CliProcessResult<T>>() { @Override public CliProcessResult<T> call() throws Exception { int exitCode = process.waitFor(); T result = stringResultConverter.getResult(processStdOut.get()); processStdErr.get(); return new CliProcessResult<T>(exitCode, result); } }); executor.submit(processStdOut); executor.submit(processStdErr); executor.submit(processMain); return this; }
From source file:ch.raffael.util.swing.SwingUtil.java
public static <T> ListenableFuture<T> invokeInEventQueue(Callable<T> callable) { if (SwingUtilities.isEventDispatchThread()) { T result;/*from w w w.j a v a 2s .c o m*/ try { result = callable.call(); return Futures.immediateFuture(result); } catch (Exception e) { return Futures.immediateFailedFuture(e); } } else { ListenableFutureTask<T> future = ListenableFutureTask.create(callable); SwingUtilities.invokeLater(future); return future; } }
From source file:org.dcache.gridsite.KeyPairCache.java
public KeyPairCache(int lifetime) { if (lifetime > 0) { _cache = CacheBuilder.newBuilder().maximumSize(1000).expireAfterWrite(EXPIRE_AFTER, TimeUnit.DAYS) .refreshAfterWrite(lifetime, TimeUnit.SECONDS).build(new CacheLoader<Integer, KeyPair>() { @Override/*w ww . j a v a 2 s . co m*/ public KeyPair load(Integer keySize) throws NoSuchAlgorithmException, NoSuchProviderException { return generate(keySize); } @Override public ListenableFuture<KeyPair> reload(final Integer keySize, KeyPair previous) { ListenableFutureTask<KeyPair> task = ListenableFutureTask .create(new Callable<KeyPair>() { @Override public KeyPair call() throws NoSuchAlgorithmException, NoSuchProviderException { return generate(keySize); } }); _executor.execute(task); return task; } }); } else { _cache = null; } }
From source file:org.dcache.gsi.KeyPairCache.java
public KeyPairCache(long lifetime, TimeUnit unit) { if (lifetime > 0) { _cache = CacheBuilder.newBuilder().maximumSize(1000).expireAfterWrite(EXPIRE_AFTER, TimeUnit.DAYS) .refreshAfterWrite(lifetime, unit).build(new CacheLoader<Integer, KeyPair>() { @Override//from w ww . j a v a 2s . com public KeyPair load(Integer keySize) throws NoSuchAlgorithmException, NoSuchProviderException { return generate(keySize); } @Override public ListenableFuture<KeyPair> reload(final Integer keySize, KeyPair previous) { ListenableFutureTask<KeyPair> task = ListenableFutureTask .create(() -> generate(keySize)); _executor.execute(task); return task; } }); } else { _cache = null; } }
From source file:gobblin.util.executors.MDCPropagatingScheduledExecutorService.java
@Override public <V> ListenableScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit) { ListenableFutureTask<V> task = ListenableFutureTask.create(new MDCPropagatingCallable<>(callable)); ScheduledFuture<?> scheduled = executorService.schedule(task, delay, unit); return new ListenableScheduledTask<>(task, scheduled); }
From source file:dagger2.producers.internal.Producers.java
/** * Submits a callable to an executor, returning the future representing the task. This mirrors * {@link com.google.common.util.concurrent.ListeningExecutorService#submit}, but only requires an * {@link Executor}.//from w w w .j a va 2s . co m * * @throws RejectedExecutionException if this task cannot be accepted for execution. */ public static <T> ListenableFuture<T> submitToExecutor(Callable<T> callable, Executor executor) { ListenableFutureTask<T> future = ListenableFutureTask.create(callable); executor.execute(future); return future; }
From source file:org.trinity.foundation.render.qt.impl.binding.view.delegate.ChildViewDelegateImpl.java
@Override public ListenableFuture<Void> destroyView(final Object parentView, final Object deletedChildView, final int deletedPosition) { // checkArgument(deletedChildView instanceof QWidget, // format("Expected view should be of type %s", // QWidget.class.getName())); final ListenableFutureTask<Void> destroyTask = ListenableFutureTask.create(new Callable<Void>() { @Override//ww w. j a v a 2s . c o m public Void call() { //FIXME workaround for too eagerly registering view elements with a datacontext if (deletedChildView instanceof QWidget) { final QWidget deletedChildViewInstance = (QWidget) deletedChildView; deletedChildViewInstance.close(); } return null; } }); QApplication.invokeLater(destroyTask); return destroyTask; }
From source file:org.trinity.foundation.render.qt.impl.painter.PainterImpl.java
@Override public ListenableFuture<Void> destroy() { final QWidget view = this.viewDiscovery.lookupView(this.model); final Callable<Void> callable = new Callable<Void>() { @Override// w w w . j a va2s .c om public Void call() { LOG.debug("[view={}] close.", view); view.close(); return null; } }; final ListenableFutureTask<Void> futureTask = ListenableFutureTask.create(callable); QApplication.invokeLater(futureTask); return futureTask; }
From source file:com.addthis.hydra.job.store.AvailableCache.java
/** * Make a cache using specified cache parameters * * @param refreshMillis How frequently values should be refreshed in milliseconds (if <= 0, no refresh) * @param expireMillis How old values should have to be before they are expired (if <= 0, they never expire) * @param maxSize How many values should be stored in the cache (if <= 0, no explicit limit) * @param fetchThreads How many threads to use to fetch values in the background (if <=0, use two threads) *//* ww w .j a va2 s . c o m*/ public AvailableCache(long refreshMillis, long expireMillis, int maxSize, int fetchThreads) { CacheBuilder<Object, Object> cacheBuilder = CacheBuilder.newBuilder(); // Configure the cache for any parameters that are > 0 if (expireMillis > 0) { cacheBuilder.expireAfterWrite(expireMillis, TimeUnit.MILLISECONDS); } if (refreshMillis > 0) { cacheBuilder.refreshAfterWrite(refreshMillis, TimeUnit.MILLISECONDS); } if (maxSize > 0) { cacheBuilder.maximumSize(maxSize); } if (fetchThreads <= 0) { fetchThreads = 2; } executor = new ThreadPoolExecutor(fetchThreads, fetchThreads, 1000L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(), new ThreadFactoryBuilder().setNameFormat("avail-cache-%d").setDaemon(true).build()); //noinspection unchecked this.loadingCache = cacheBuilder.build(new CacheLoader<String, Optional<T>>() { @Override /** * If refreshAfterWrite is enabled, this method is called after returning the old value. * The new value will be inserted into the cache when the load() operation completes. */ public ListenableFuture<Optional<T>> reload(final String key, Optional<T> oldValue) { ListenableFutureTask<Optional<T>> task = ListenableFutureTask.create(() -> load(key)); executor.execute(task); return task; } @Override public Optional<T> load(String key) throws Exception { return Optional.fromNullable(fetchValue(key)); } }); }