![]() |
1
3
唯一的防爆解决方案是以隔离方式运行客户端提供的代码。隔离实际上是一个私有虚拟机,Java应用程序可以创建、管理和通信。尤其是,父应用程序可以安全地终止隔离及其所有线程。 参考: JSR-000121 Application Isolation API Specification - Final Release 问题是找到一个支持隔离的JVM。 |
![]() |
2
2
重新阅读你的问题,意识到你对任务代码没有任何控制权。 task1不中断的原因是interrupt()方法实际上不会中断任何东西,它只会在线程等待某个锁或睡眠时导致线程中断,否则除了设置状态之外,它实际上不会执行任何操作。 唯一可以杀死task1的方法是使用Thread.stop()方法。 但要小心,因为它可能会非常危险,使您的系统不稳定。 查看更多 here . |
![]() |
3
2
您可以使用“stop”标志和包装类来终止您自己的任务和客户机给您的任务。
您的任务可以将控制器(“this”指针)作为构造参数,并检查
|
![]() |
4
1
打扰真的是 合作的 取消机制,不是抢先机制。完成一个优雅的取消任务需要任务的配合。如果任务是不可中断的(即,不通过检查中断状态或响应中断异常来中止其操作),则取消该任务的方法不多。传递中断是微不足道的;它实际上是任务对它的响应方式。 一种可能的解决方案可能是通过诸如动态检测之类的方法将代码注入到任务中。但是,即使这样也不一定,如果任务使用while循环,也需要在while循环中注入代码。 |
![]() |
5
1
我将提供一种机制,允许客户端代码协同处理停止信号。如果客户端代码处理信号,则您的应用程序和客户端同意它可以及时停止。否则,在代码返回到中断的()检查时中断线程。我的观点是,你应该要求客户端代码是合作的,而不是盲目地打断它。 |
![]() |
6
0
在while循环和for循环中检查两次中断。
|
![]() |
7
0
如果其他人在工作线程中提供代码(作为jar?)他们会把你的代码作为他们工作的一部分吗?您可以检查您编写的函数中是否有中断,并抛出一个未经检查的异常,我们希望该异常将终止线程。
小心警告编写代码的开发人员:请参见 this article describing some of the problems that can arise . 因此,简而言之,如果你不写代码,最好是让任何人检查线程。中断(),这样他们就可以干净地退出。 |
![]() |
8
0
停止线程的一个简单方法是定义 停止标志 对于每个线程,然后定期检查该标志。 例如:
|
![]() |
user107586 · 如何处理等待句柄不会导致无限循环? 7 月前 |
![]() |
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 7 月前 |
![]() |
BenjiFB · C#内存缓存:在一次操作中追加到列表? 7 月前 |
![]() |
András Takács · Python多线程问题 11 月前 |
|
András Takács · Python多线程错误 11 月前 |