采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
Future的cancel方法真的能终止正在运行的线程?我用一个简单的demo发现并不能终止
我看了你那段讲解,因为之前在项目组的时候有人对这个提出了质疑,cancel只是发一个终端标记。最简单的例子就是主线程中起个子线程,子线程中是个死循环运行,在主线程中拿到子线程的future,然后执行cancel,你发现子线程并不能终止,还是在运行
子线程需要具备响应中断的能力。
我可不可以这样理解在子线程有判断是否子线程收到中断响应,如果收到,子线程运行完毕
是的,对于线程中断和如何正确停止线程,在另外一门并发课有详细介绍哈,浓缩如下: 1.原理:用interrupt来请求线程停止而不是强制,好处是安全。 2.三方配合:想停止线程,要请求方、被停止方、子方法被调用方相互配合才行: 作为被停止方:每次循环中或者适时检查中断信号,并且在可能抛出InterrupedException的地方处理该中断信号; 请求方:发出中断信号; 子方法调用方(被线程调用的方法的作者)要注意:优先在方法层面抛出InterrupedException,或者检查到中断信号时,再次设置中断状态; 3.最后再说错误的方法:stop/suspend已废弃,volatile的boolean无法处理长时间阻塞的情况
cancel方法传入true会发中断信号,课里讲future方法的时候详细讲解了呀
登录后可查看更多问答,登录/注册
JUC全方位讲解,构建并发工具类知识体系
982 11
1.4k 10
1.0k 10
992 10
1.4k 9