【发布时间】:2018-07-24 00:22:45
【问题描述】:
我正在尝试为执行程序异步调用的线程实现超时。
流程如下:
线程 1: 使用下面的代码启动任务以在线程 2 上运行并立即返回,而无需等待 Future 对象结果
线程 2: 漫长的过程,并会更新一些存储,一些结果在最后缓存中
现在,要求是在某个超时值后杀死 Thread-2 而不会阻塞 Thread-1
代码 sn-p:
ExecutorService executor = Executors.newFixedThreadPool(1);
Future<Task> future = executor.submit(new Callable<Task>() {
public Task call() throws Exception {
try{
return new Task();
}catch (Exception e) {
//print stack
}
}
});
有什么见解/建议来实现这个吗?
【问题讨论】:
-
您需要注意一些事情。 1. 你有多少生产者线程和消费者线程。 2、其实thread2不能杀,除非它处于等待状态。
-
我认为这不是一个好主意。
标签: java multithreading timeout executorservice