要使任务和线程能安全可靠地停止,并不是一件很容易的事情,java没有提供任何机制来安全地终止线程,那么我们该怎么办呢?下面我们先来了解一下java中的中断机制: java中断机制是一种协作机制,也就是说在某个线程中对另一个线程调用interrupt()方法并不能直接终止该线程 ...
要使任务和线程能安全可靠地停止,并不是一件很容易的事情,java没有提供任何机制来安全地终止线程,那么我们该怎么办呢?
下面我们先来了解一下java中的中断机制:
java中断机制是一种协作机制,也就是说在某个线程中对另一个线程调用interrupt()方法并不能直接终止该线程,需要被中断的线程自己处理中断请求
interrupted() 和 isInterrupted()的主要区别:
非静态方法isInterrupted()用来查询某线程的中断状态,且不会改变该线程的中断状态标识;
静态方法interrupted()检查中断状态时,中断状态会被清零(置为false)。
在下面的例子中,主线程通过调用t.interrupt()方法将线程t的中断状态设置为true,线程t可以在合适的时候调用interrupted()方法或isInterrupted()方法来检测其中断状态并做相应处理:
package com.test;public class ThreadTest extends Thread { public void run() { while (true) { if (Thread.interrupted()) { System.out.println("Someone interrupted me."); break; } else { System.out.println("Going..."); } long now = System.currentTimeMillis(); while (System.currentTimeMillis() - now < 1000) { //让循环持续一段时间,打印的输出语句会少一些 } } } public static void main(String[] args) throws InterruptedException { ThreadTest t = new ThreadTest(); t.start(); Thread.sleep(3000); t.interrupt(); }}
原标题:java并发:中断一个正在运行的线程
关键词:JAVA
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。