【发布时间】:2019-04-01 21:29:18
【问题描述】:
是否可以在所有线程完成之前从启动线程的 java 方法返回?
这是我的代码:
import java.util.concurrent.*;
public class ExecutorSample {
public static void main(String[] args) {
ExecutorService service = Executors.newCachedThreadPool();
for (int i = 0; i < 10; i++) {
service.execute(() -> {
while (true) {
}
});
}
return;
}
}
由于某种我不明白的原因,这不会返回。为什么工作线程卡住会影响主线程的返回?
【问题讨论】:
-
你怎么知道方法没有返回?
-
@khelwood 我测试过,它卡在 main 上。
-
@ScaryWombat shutdownNow 也不起作用,因为它只是最好的尝试,实际上并没有关闭工作线程
-
@Jessica 你必须向我们展示你的测试结果,这可能是为什么有人不赞成你。此外,您应该在代码示例中显示测试。
-
将代码放在另一个方法中,从
main调用它,在另一个方法返回后在main中打印一些东西来测试其他方法是否返回。
标签: java multithreading thread-safety threadpool