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
posted @ 2017-01-20 15:38  MicroCat  阅读(267)  评论(0编辑  收藏  举报