我的处境很奇怪。在我的网络服务器(tomcat)中,根据网络请求,我基本上需要取消以前的请求。我有一个对执行上一个请求的线程的引用。所以我可以直接中断那个线程,节点会做剩下的事情。
我知道你不应该中断你不拥有的线程。但是在这种情况下中断tomcat线程安全吗?什么可以是另一种方式?维护自己的线程池是浪费资源和开销
最佳答案
维护您自己的线程池是一种资源浪费,但它在其他方面也是有益的,例如您的应用程序服务器的稳定性。因此,您需要决定哪个更重要:几千字节的内存和 CPU 周期或稳定、可靠的应用程序。
中断另一个线程的问题是您通常不能确定另一个线程在代码中的什么位置。您可能想为此使用锁定:
线程 A 在可以安全中断时锁定某些东西,线程 B 检查锁,如果它无法获得它,它会中断 A。
但是当A刚要放弃锁,B检查锁,A解锁并开始清理,B发送中断时会发生什么?
所以你真的应该使用你自己的线程池。
关于java - 中断tomcat线程是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13508599/