首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >中断或停止休眠线程

中断或停止休眠线程
EN

Stack Overflow用户
提问于 2010-11-24 15:25:17
回答 4查看 64.5K关注 0票数 21

如何在java中停止或中断休眠线程?如果我想通过在线程休眠时停止该线程来停止同步,我在run()方法中有一个线程可以同步数据并休眠10分钟。如何才能做到这一点?

EN

回答 4

Stack Overflow用户

发布于 2010-11-24 15:28:37

在线程上调用interrupt()方法。这将导致睡眠被取消,并抛出InterruptedException。

票数 20
EN

Stack Overflow用户

发布于 2010-11-24 15:31:41

您可以使用Thread.interrupt()中断休眠线程。现在停止线程已经被弃用了--如果线程持有某个锁该怎么办?(有一个Thread.stop(),但非常不鼓励)。

或者,您可以让线程等待对象的超时通知,而不是休眠,如果您希望线程唤醒,则可以简化通知对象。

票数 12
EN

Stack Overflow用户

发布于 2010-11-24 17:18:57

Suresh,我想关注一个问题。interrupt()方法本身不会中断线程。它只是通过将标志设置为true来向线程发送中断请求。通常你的线程应该处理取消/中断策略。它在Java Concurrecy in Practice的第7.1节任务取消中有很大的描述。

像Thread.sleep和Object.wait这样的阻塞库方法会尝试检测线程何时被中断并提早返回。它们通过清除中断状态并抛出InterruptedException来响应中断。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4264355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档