Thread--停止线程
参考:http://blog.sina.com.cn/s/blog_6ca570ed01016mti.html
Thread.interrupt()方法不会中断一个正在运行的线程。它的作用是,在线程受到阻塞时抛出一个中断信号,这样线程就得以退出阻塞的状态。更确切的说,如果线程被Object.wait, Thread.join和Thread.sleep三种方法之一阻塞,那么,它将接收到一个中断异常(InterruptedException),从而提早地终结被阻塞状态。
interrupt方法并不是强制终止线程,它只能设置线程的interrupted状态,而在线程中一般使用一下方式:
while (!Thread.currentThread().isInterrupted() && more work to do)
{...}
判断线程是否是停止状态:
interrupted
public static boolean interrupted()
- 测试当前线程是否已经中断。线程的中断状态 由该方法清除。换句话说,如果连续两次调用该方法,则第二次调用将返回 false(在第一次调用已清除了其中断状态之后,且第二次调用检验完中断状态前,当前线程再次中断的情况除外)。
线程中断被忽略,因为在中断时不处于活动状态的线程将由此返回 false 的方法反映出来。
- 返回:
- 如果当前线程已经中断,则返回
true
;否则返回false
。
isInterrupted
public boolean isInterrupted()
- 测试线程是否已经中断。线程的中断状态 不受该方法的影响。
线程中断被忽略,因为在中断时不处于活动状态的线程将由此返回 false 的方法反映出来。
- 返回:
- 如果该线程已经中断,则返回
true
;否则返回false
。
其他:
异常停止
return停止
建议使用抛异常来实现线程停止,因为在catch块中还可以向上抛异常,使线程停止的时间得以传播。
public static boolean interrupted()
- 测试当前线程是否已经中断。线程的中断状态 由该方法清除。换句话说,如果连续两次调用该方法,则第二次调用将返回 false(在第一次调用已清除了其中断状态之后,且第二次调用检验完中断状态前,当前线程再次中断的情况除外)。
线程中断被忽略,因为在中断时不处于活动状态的线程将由此返回 false 的方法反映出来。
- 返回:
- 如果当前线程已经中断,则返回
true
;否则返回false
。