You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.1 KiB
101 lines
3.1 KiB
package com.fr.third.alibaba.ttl.threadpool; |
|
|
|
import com.fr.third.alibaba.ttl.TransmittableThreadLocal; |
|
import com.fr.third.alibaba.ttl.TtlCallable; |
|
import com.fr.third.alibaba.ttl.TtlRunnable; |
|
import com.fr.third.alibaba.ttl.spi.TtlEnhanced; |
|
import org.jetbrains.annotations.NotNull; |
|
|
|
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, TtlEnhanced { |
|
private final ExecutorService executorService; |
|
|
|
ExecutorServiceTtlWrapper(@NotNull ExecutorService executorService) { |
|
super(executorService); |
|
this.executorService = executorService; |
|
} |
|
|
|
@Override |
|
public void shutdown() { |
|
executorService.shutdown(); |
|
} |
|
|
|
@NotNull |
|
@Override |
|
public List<Runnable> shutdownNow() { |
|
return executorService.shutdownNow(); |
|
} |
|
|
|
@Override |
|
public boolean isShutdown() { |
|
return executorService.isShutdown(); |
|
} |
|
|
|
@Override |
|
public boolean isTerminated() { |
|
return executorService.isTerminated(); |
|
} |
|
|
|
@Override |
|
public boolean awaitTermination(long timeout, @NotNull TimeUnit unit) throws InterruptedException { |
|
return executorService.awaitTermination(timeout, unit); |
|
} |
|
|
|
@NotNull |
|
@Override |
|
public <T> Future<T> submit(@NotNull Callable<T> task) { |
|
return executorService.submit(TtlCallable.get(task)); |
|
} |
|
|
|
@NotNull |
|
@Override |
|
public <T> Future<T> submit(@NotNull Runnable task, T result) { |
|
return executorService.submit(TtlRunnable.get(task), result); |
|
} |
|
|
|
@NotNull |
|
@Override |
|
public Future<?> submit(@NotNull Runnable task) { |
|
return executorService.submit(TtlRunnable.get(task)); |
|
} |
|
|
|
@NotNull |
|
@Override |
|
public <T> List<Future<T>> invokeAll(@NotNull Collection<? extends Callable<T>> tasks) throws InterruptedException { |
|
return executorService.invokeAll(TtlCallable.gets(tasks)); |
|
} |
|
|
|
@NotNull |
|
@Override |
|
public <T> List<Future<T>> invokeAll(@NotNull Collection<? extends Callable<T>> tasks, long timeout, @NotNull TimeUnit unit) throws InterruptedException { |
|
return executorService.invokeAll(TtlCallable.gets(tasks), timeout, unit); |
|
} |
|
|
|
@NotNull |
|
@Override |
|
public <T> T invokeAny(@NotNull Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException { |
|
return executorService.invokeAny(TtlCallable.gets(tasks)); |
|
} |
|
|
|
@Override |
|
public <T> T invokeAny(@NotNull Collection<? extends Callable<T>> tasks, long timeout, @NotNull TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException { |
|
return executorService.invokeAny(TtlCallable.gets(tasks), timeout, unit); |
|
} |
|
|
|
@NotNull |
|
@Override |
|
public ExecutorService unwrap() { |
|
return executorService; |
|
} |
|
}
|
|
|