【发布时间】:2015-11-22 16:53:44
【问题描述】:
假设一个名为Prey 的类扩展了Thread,并且一个名为deer 的Prey 的对象在synchronized 资源上处于等待状态。现在我想强行杀死这个处于等待状态的deer。以下哪一项是杀死deer的正确方法。
deer.interrupt();deer.notify(); deer.interrupt();deer.notify(); deer.killmeBoolean(true);deer.killmeBoolean(true); deer.notify();
其中killmeBoolean(boolean) 用于设置一个标志,以便deer 线程可以从while(flag) 循环中终止。
【问题讨论】:
-
对我来说好像是作业。
-
是 1) 如果你中断的代码写得正确。但不能保证:ibm.com/developerworks/library/j-jtp05236(或阅读 jcip.net 书)。
Thread.currentThread().isInterrupted()通常(减去通过 InterruptedException 停止时不设置中断标志的代码)与自定义布尔值一样好,因此您不需要。 -
@VinodMadyalkar 一个中断不会释放任何锁,除非线程被实现为这样做。
标签: java multithreading concurrency synchronization