【发布时间】:2015-08-30 22:47:50
【问题描述】:
我正在尝试构建类似于后台任务执行器的东西,如果没有答案,它会在一段时间后终止后台任务(后台任务调用 web 服务,它们可能会超时,但我需要确保它们在特定时间下超时时间)
所以我把它作为一个实验,但如果我运行它,程序不会终止。我想知道是不是因为后台线程仍然处于活动状态?我怎样才能关闭它?
public class Test {
public static class Task implements Callable<Object> {
@Override
public Object call() throws Exception {
while(true) {}
}
}
public static void main(String[] args) {
try {
Task t = new Task();
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.invokeAll(Arrays.asList(t), 5L, TimeUnit.SECONDS);
executor.shutdown();
System.out.println("DONE");
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
【问题讨论】:
-
上述代码中的Task在哪里关闭?没有我能看到的地方。
标签: java multithreading executorservice