タイムアウト後にタスクを中断するExecutorService
タイムアウトを指定できるExecutorService実装を探しています。ExecutorServiceに送信されたタスクは、実行にタイムアウトよりも長い時間がかかると中断されます。そのような獣を実装することはそれほど難しい作業ではありませんが、誰かが既存の実装を知っているかどうか疑問に思っています。 以下は、以下の議論に基づいて私が思いついたものです。コメントは? import java.util.List; import java.util.concurrent.*; public class TimeoutThreadPoolExecutor extends ThreadPoolExecutor { private final long timeout; private final TimeUnit timeoutUnit; private final ScheduledExecutorService timeoutExecutor = Executors.newSingleThreadScheduledExecutor(); private final ConcurrentMap<Runnable, ScheduledFuture> runningTasks = new ConcurrentHashMap<Runnable, ScheduledFuture>(); public TimeoutThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, long timeout, TimeUnit timeoutUnit) …