如何在java中停止或中断休眠线程?如果我想通过在线程休眠时停止该线程来停止同步,我在run()方法中有一个线程可以同步数据并休眠10分钟。如何才能做到这一点?
发布于 2010-11-24 15:28:37
在线程上调用interrupt()方法。这将导致睡眠被取消,并抛出InterruptedException。
发布于 2010-11-24 15:31:41
您可以使用Thread.interrupt()
中断休眠线程。现在停止线程已经被弃用了--如果线程持有某个锁该怎么办?(有一个Thread.stop()
,但非常不鼓励)。
或者,您可以让线程等待对象的超时通知,而不是休眠,如果您希望线程唤醒,则可以简化通知对象。
发布于 2010-11-24 17:18:57
Suresh,我想关注一个问题。interrupt()方法本身不会中断线程。它只是通过将标志设置为true来向线程发送中断请求。通常你的线程应该处理取消/中断策略。它在Java Concurrecy in Practice的第7.1节任务取消中有很大的描述。
像Thread.sleep和Object.wait这样的阻塞库方法会尝试检测线程何时被中断并提早返回。它们通过清除中断状态并抛出InterruptedException来响应中断。
https://stackoverflow.com/questions/4264355
复制相似问题