@Override protected void doExecute(Runnable task) { limiterForKey(taskKey, (l) -> l.execute(permits, task)); } }
@Override protected void doExecute(Runnable task) { limiterForKey(taskKey, (l) -> l.execute(permits, task)); } }
/** * Provide a task to be run with a given thread key. * <p> * See also: {@link SubmitterExecutor#execute(Runnable)} and * {@link RateLimiterExecutor#execute(double, Runnable)}. * * @param permits resource permits for this task * @param taskKey object key where {@code equals()} will be used to determine execution thread * @param task Task to be executed * @return Time in milliseconds task was delayed to maintain rate, or {@code -1} if rejected but handler did not throw */ public long execute(double permits, Object taskKey, Runnable task) { return limiterForKey(taskKey, (l) -> l.execute(permits, task)); }
/** * Provide a task to be run with a given thread key. * <p> * See also: {@link SubmitterExecutor#execute(Runnable)} and * {@link RateLimiterExecutor#execute(double, Runnable)}. * * @param permits resource permits for this task * @param taskKey object key where {@code equals()} will be used to determine execution thread * @param task Task to be executed * @return Time in milliseconds task was delayed to maintain rate, or {@code -1} if rejected but handler did not throw */ public long execute(double permits, Object taskKey, Runnable task) { return limiterForKey(taskKey, (l) -> l.execute(permits, task)); }
/** * Submit a callable to be run with a given thread key. * <p> * See also: {@link SubmitterExecutor#submit(Callable)} and * {@link RateLimiterExecutor#submit(double, Callable)}. * * @param <T> type of result returned from the future * @param permits resource permits for this task * @param taskKey object key where {@code equals()} will be used to determine execution thread * @param task Callable to be executed * @return Future to represent when the execution has occurred and provide the result from the callable */ public <T> ListenableFuture<T> submit(double permits, Object taskKey, Callable<T> task) { return limiterForKey(taskKey, (l) -> l.submit(permits, task)); }
/** * Submit a callable to be run with a given thread key. * <p> * See also: {@link SubmitterExecutor#submit(Callable)} and * {@link RateLimiterExecutor#submit(double, Callable)}. * * @param <T> type of result returned from the future * @param permits resource permits for this task * @param taskKey object key where {@code equals()} will be used to determine execution thread * @param task Callable to be executed * @return Future to represent when the execution has occurred and provide the result from the callable */ public <T> ListenableFuture<T> submit(double permits, Object taskKey, Callable<T> task) { return limiterForKey(taskKey, (l) -> l.submit(permits, task)); }
/** * Submit a task to be run with a given thread key. * <p> * See also: {@link SubmitterExecutor#submit(Runnable, Object)} and * {@link RateLimiterExecutor#submit(double, Runnable, Object)}. * * @param <T> type of result returned from the future * @param permits resource permits for this task * @param taskKey object key where {@code equals()} will be used to determine execution thread * @param task Runnable to be executed * @param result Result to be returned from future when task completes * @return Future to represent when the execution has occurred and provide the given result */ public <T> ListenableFuture<T> submit(double permits, Object taskKey, Runnable task, T result) { // we go directly to the limiter here to get DoNothingRunnable optimizations (can't wrap task) return limiterForKey(taskKey, (l) -> l.submit(permits, task, result)); }
/** * Submit a task to be run with a given thread key. * <p> * See also: {@link SubmitterExecutor#submit(Runnable, Object)} and * {@link RateLimiterExecutor#submit(double, Runnable, Object)}. * * @param <T> type of result returned from the future * @param permits resource permits for this task * @param taskKey object key where {@code equals()} will be used to determine execution thread * @param task Runnable to be executed * @param result Result to be returned from future when task completes * @return Future to represent when the execution has occurred and provide the given result */ public <T> ListenableFuture<T> submit(double permits, Object taskKey, Runnable task, T result) { // we go directly to the limiter here to get DoNothingRunnable optimizations (can't wrap task) return limiterForKey(taskKey, (l) -> l.submit(permits, task, result)); }