Java 学习笔记之 线程interrupted方法
Posted AK47Sonic
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 学习笔记之 线程interrupted方法相关的知识,希望对你有一定的参考价值。
线程interrupted方法:
interrupted()是Thread类的方法,用来测试当前线程是否已经中断。
public class InterruptThread extends Thread{ @Override public void run() { for (int i = 0; i< 5000000; i++){ System.out.println("i=" + (i + 1)); } } } public class ThreadRunMain { public static void main(String[] args) { testInterruptThread(); } public static void testInterruptThread(){ try { InterruptThread it = new InterruptThread(); it.start(); Thread.sleep(1000); it.interrupt(); System.out.println("First call: " + Thread.interrupted()); System.out.println("Second call: " + Thread.interrupted()); } catch (InterruptedException e) { System.out.println("Main catch"); e.printStackTrace(); } System.out.println("end!"); } }
运行结果:
从控制台打印的结果来看,返回的结果是false,因为当前线程是main,被中断的却是InterruptThread,所以main线程不受影响。
再看一个例子:
public class ThreadRunMain { public static void main(String[] args) { testMainInterruptThread(); } public static void testMainInterruptThread(){ Thread.currentThread().interrupt(); System.out.println("First call: " + Thread.interrupted()); System.out.println("Second call: " + Thread.interrupted()); System.out.println("end!"); } }
运行结果:
同样是调用Thread.interrupted(), 但是为什么第一次结果是true,第二次确是false呢?
因为interrupted()方法具有清除状态功能,所以第二次调用interrupted()返回的值是false。
以上是关于Java 学习笔记之 线程interrupted方法的主要内容,如果未能解决你的问题,请参考以下文章