Example usage for com.google.common.util.concurrent ListenableFutureTask create

List of usage examples for com.google.common.util.concurrent ListenableFutureTask create

Introduction

In this page you can find the example usage for com.google.common.util.concurrent ListenableFutureTask create.

Prototype

public static <V> ListenableFutureTask<V> create(Callable<V> callable) 

Source Link

Document

Creates a ListenableFutureTask that will upon running, execute the given Callable .

Usage

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));
        }
    });
}