【发布时间】:2013-08-07 17:58:06
【问题描述】:
我正在阅读 Java 线程。我正在研究sleep() 方法。书中指出
当线程遇到
sleep调用时,它必须进入休眠状态 指定的时间量,除非它在唤醒之前被中断 时间。
我正在阅读有关中断的信息,但是线程如何向自身发送中断?我认同
另一个线程可以发送中断吗?我理解正确吗?此外,做这两个
将发送中断的线程应该具有相同的目标Runnable?如果
假设一个线程被中断,它会回到Runnable 状态吗?真的对不起,
如果我听起来很愚蠢,那对我来说只是很新鲜。谢谢
【问题讨论】:
-
当你想学习多线程时,最好使用ExecutorServices,它们更容易使用,更健壮。我个人认为,使用普通线程有点过时了,并且使多线程变得比它需要的更复杂。
-
@Casey 即使在 Executor 框架内,理解中断过程也很重要。
-
@Casey,我对线程很陌生,所以首先要复习一下基础知识。
-
@assylias 在我看来,在被 ExecutorService 执行时使用 Thread.sleep 是一个严重的错误。您阻止整个线程并阻止其他作业被执行。这实际上可以控制整个 ExecutorService。如果您想在延迟后执行某些代码,则需要安排其他任务。 ExecutorServices 的一大优势是您不需要关心整个低级别的事情,例如睡眠/中断或等待/通知。
标签: java multithreading