
com.alibaba.ttl.threadpool.ExecutorServiceTtlWrapper Maven / Gradle / Ivy
package com.alibaba.ttl.threadpool;
import com.alibaba.ttl.TransmittableThreadLocal;
import com.alibaba.ttl.TtlCallable;
import com.alibaba.ttl.TtlRunnable;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.*;
/**
* {@link TransmittableThreadLocal} Wrapper of {@link ExecutorService},
* transmit the {@link TransmittableThreadLocal} from the task submit time of {@link Runnable} or {@link Callable}
* to the execution time of {@link Runnable} or {@link Callable}.
*
* @author Jerry Lee (oldratlee at gmail dot com)
* @since 0.9.0
*/
class ExecutorServiceTtlWrapper extends ExecutorTtlWrapper implements ExecutorService {
private final ExecutorService executorService;
ExecutorServiceTtlWrapper(ExecutorService executorService) {
super(executorService);
this.executorService = executorService;
}
@Override
public void shutdown() {
executorService.shutdown();
}
@Override
public List shutdownNow() {
return executorService.shutdownNow();
}
@Override
public boolean isShutdown() {
return executorService.isShutdown();
}
@Override
public boolean isTerminated() {
return executorService.isTerminated();
}
@Override
public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {
return executorService.awaitTermination(timeout, unit);
}
@Override
public Future submit(Callable task) {
return executorService.submit(TtlCallable.get(task));
}
@Override
public Future submit(Runnable task, T result) {
return executorService.submit(TtlRunnable.get(task), result);
}
@Override
public Future> submit(Runnable task) {
return executorService.submit(TtlRunnable.get(task));
}
@Override
public List> invokeAll(Collection extends Callable> tasks) throws InterruptedException {
return executorService.invokeAll(TtlCallable.gets(tasks));
}
@Override
public List> invokeAll(Collection extends Callable> tasks, long timeout, TimeUnit unit) throws InterruptedException {
return executorService.invokeAll(TtlCallable.gets(tasks), timeout, unit);
}
@Override
public T invokeAny(Collection extends Callable> tasks) throws InterruptedException, ExecutionException {
return executorService.invokeAny(TtlCallable.gets(tasks));
}
@Override
public T invokeAny(Collection extends Callable> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
return executorService.invokeAny(TtlCallable.gets(tasks), timeout, unit);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy