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

时间:2018-01-08 06:16:09

标签: java multithreading

我有一个方法可以从线程内的网站中删除数据,然后给我一个检索到的数据总数。

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

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

2 个答案:

答案 0 :(得分:0)

向线程发送中断本身并不能阻止线程。

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

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

答案 1 :(得分:0)

Thread.interrupt()不会停止线程。它只是告诉线程停止。代码需要轮询并检查状态并正确处理。

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