我正面临一些执行者服务被绞死的问题。
我想测试一个可运行线程之一被卡住的场景,因为它涉及很多系统并最终导致执行器挂起。
为此,我创建了一个测试场景,我通过执行器服务创建了5个线程,并在其中一个线程中编写了一个无限循环。我看到代码被卡在该循环中而没有实现主线程的shutdown / shoutDownNow方法。什么是主线程执行的优先级。在这种情况下我们如何强制关闭?
答案 0 :(得分:1)
在任何可运行任务仍在进行之前,我们无法强制关闭(非守护程序线程)。您可以尝试使用大型迭代循环并查看。例如
ExecutorService e = Executors.newCachedThreadPool();
e.execute(new Runnable() {
@Override
public void run() {
for(int i =0 ; i< 5000; i++){
System.out.println("run me in a different thread" + i);
}
}
});
e.shutdown();