重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章将为大家详细讲解有关Java中怎么检测线程中断状态,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联公司欢迎来电:028-86922220,为您提供成都网站建设网页设计及定制高端网站建设服务,创新互联公司网页制作领域十余年,包括成都柔性防护网等多个领域拥有丰富的网站维护经验,选择创新互联公司,为网站保驾护航。
一 代码
public class InterruptCheck { public static void main( String[] args ) throws Exception { // sleepThread不停尝试睡眠 Thread sleepThread = new Thread(new SleepRunner(), "SleepThread"); sleepThread.setDaemon(true); // busyThread不停运行 Thread busyThread = new Thread(new BusyRunner(), "BusyThread"); busyThread.setDaemon(true); sleepThread.start(); busyThread.start(); // 休眠5秒,让sleepThread和busyThread充分运行 Thread.sleep(5000); sleepThread.interrupt(); busyThread.interrupt(); System.out.println("休眠线程中断标识位为: " + sleepThread.isInterrupted()); System.out.println("忙碌线程中断标识位为: " + busyThread.isInterrupted()); // 防止sleepThread和busyThread立刻退出 Thread.sleep(2000); } static class SleepRunner implements Runnable { @Override public void run() { try { while (true) { Thread.sleep(10000); } } catch (InterruptedException e) { System.out.println("线程被中断" ); } } } static class BusyRunner implements Runnable { @Override public void run() { while (true) ;//do nothing } }}
二 运行
线程被中断休眠线程中断标识位为: false忙碌线程中断标识位为: true
三 说明
从运行结果来看,抛出InterruptedException中断异常的线程(sleepThread),Java虚拟机先将它的中断标识清除(即让isInterrupted()返回false),然后再中断这个线程。而一直处于忙碌的线程,中断标识位一直保持有效(isInterrupted()返回true)。
中断对正在运行的线程不起作用,只对阻塞线程起作用。
关于Java中怎么检测线程中断状态就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。