在线程上调用中断是否立即停止线程



我有一种方法可以从线程内的网站抓取数据,然后给我检索到的数据总数。

当我按下取消按钮时,Thread.interrupt(( 被调用并且数据报废几秒钟,然后它停止并给我检索到的数据总数。

调用 Thread.interrupt(( 会阻止线程立即执行还是需要几秒钟才能完全停止?

向线程发送中断本身根本不会阻止线程。

只有当在该线程上运行的代码考虑中断状态时,该代码才能响应中断以在最早方便时停止执行它正在做的事情。这是多久,完全取决于该代码。

某些代码甚至可以忽略中断状态。有些代码甚至无法立即响应中断状态(想到阻塞 IO(。

Thread.interrupt(( 不会停止线程。它只是发出线程停止的信号。它是代码需要轮询和检查状态并适当处理。

如果此线程在调用 Object 类的 wait(( 方法或此类的 join((,sleep(( 方法时被阻塞,则其中断状态将被清除,并且将收到 InterruptedException。

最新更新