什么是线程的中断?
问题描述:
请教,什么是线程的中断(interrupt)呢?还有就是什么是抛出中断异常(InterruptedException)啊?能不能形象的说明一下。另外线程中断有什么应用啊?谢谢
答
[quote]请教,什么是线程的中断(interrupt)呢?[/quote]
如果一个线程在waiting,或者sleeping或者其它类似动作的时候,你可以发出一个interrupt的指令中断这写动作
[quote]还有就是什么是抛出中断异常(InterruptedException)啊?能不能形象的说明一下。另外线程中断有什么应用啊?谢谢
[/quote]
最简单的应用是ThreadPoolExecutor.Worker#interruptIfIdle(),看看源码
答
给你举个例子:
在应用socket编程的时候,需要创建一个serversocket实例,serversocket类的accept方法就是阻塞方法,即accept会一直等在那里,直到有一个连接请求到达,程序才继续执行。这时候问题就来了,如果没有连接请求,程序会一直阻塞在那里,即不会往下执行,这时候我们就需要中断他。例如可以设置一个等待时间,如果超过此时间,就中断accept方法。
hope it helpful to you!