我是靠谱客的博主 坚强发箍,最近开发中收集的这篇文章主要介绍java判断符合条件时停止_Java判断线程是否是停止状态的两种方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Tread类中提供了两种方法来判断线程的状态是不是停止的。

this.interrupted():测试当前线程是否已经中断。

this.isInterrupted():测试线程是否已经中断。

1)interrupted()方法:

interrupted()方法是静态的方法,方法返回值为boolean型,调用该方法的线程的状态为将被置为"中断"状态。下面用两个例子来说明它和isInterrupted()方法的区别:

我们写了个Test2.java的类,如下:

public class Test2 extends Thread {

public void run() {

super.run();

for(int i=0;i<5000;i++){

System.out.println("i="+(i+1));

}

}public class Test1 {

public static void main(String[] args) {

Thread.currentThread().interrupt();

System.out.println("线程是否停止1?="+Thread.interrupted());

System.out.println("线程是否停止2?="+Thread.interrupted());

System.out.println("end!");

}

}

}

一个Text1.java的类

public class Test1 {

public static void main(String[] args) {

try {

Test2 thread=new Test2();

thread.start();

Thread.sleep(2000);

thread.interrupt();

System.out.println("线程是否停止1?="+thread.interrupted());

System.out.println("线程是否停止2?="+thread.interrupted());

} catch (InterruptedException e) {

System.out.println("main catch");

e.printStackTrace();

}

System.out.println("end!");

}

}控制台打印的结果:

54c26ec9c104cacb4f46d7a68f252944.png

从控制台中可以看出,线程并未停止,因为此时的当前线程指的是"main",它从未中断过,因此打印两个false结果。

那么如何使main线程产生中断的效果呢?下面我们尝试一下:

public class Test1 {

public static void main(String[] args) {

Thread.currentThread().interrupt();

System.out.println("线程是否停止1?="+Thread.interrupted());

System.out.println("线程是否停止2?="+Thread.interrupted());

System.out.println("end!");

}

}控制台结果显示:

cd43d6fe4b4b14b49b5e3dedddc85c0f.png

interrupt()是用来设置中断状态的。返回true说明中断状态被设置了而不是被清除了。

那为什么第二个boolean值是false呢?原因是interrupted()方法具有清除功能,所以第二次调用的时候返回的是false。

2)isInterrupted()方法:

isInterrupted()方法是一个非静态的返回值为boolean的方法。isInterrupted 是作用于调用该方法的线程对象所对应的线程。(线程对象对应的线程不一定是当前运行的线程。例如我们可以在当前线程中去调用另一个线程对象的isInterrupted方法。)

Thread.currentThread().interrupt(); 这个方法用于清除中断的状态,这样下次调用Thread.interrupted()方法时就会一直返回为true,因为中断标志已经被恢复了。而调用isInterrupted 只是简单的查询中断状态,不会对状态进行修改。

最后

以上就是坚强发箍为你收集整理的java判断符合条件时停止_Java判断线程是否是停止状态的两种方法的全部内容,希望文章能够帮你解决java判断符合条件时停止_Java判断线程是否是停止状态的两种方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(85)

评论列表共有 0 条评论

立即
投稿
返回
顶部