课程素材来自 http://enjoy.ke.qq.com/    版权所有

java线程中,线程中断方法详解:

线程自然终止:自然执行完或抛出未处理异常

stop(),resume(),suspend()已不建议使用,stop()会导致线程不会正确释放资源,suspend()容易导致死锁。

java线程是协作式,而非抢占式

调用一个线程的interrupt() 方法中断一个线程,并不是强行关闭这个线程,只是跟这个线程打个招呼,将线程的中断标志位置为true,线程是否中断,由线程本身决定。

isInterrupted() 判定当前线程是否处于中断状态。

static方法interrupted() 判定当前线程是否处于中断状态,同时中断标志位改为false。

方法里如果抛出InterruptedException,线程的中断标志位会被复位成false,如果确实是需要中断线程,要求我们自己在catch语句块里再次调用interrupt()。

此处关于线程的sleep方法为什么会抛出中断异常

InterruptedException   

看代码吧

package com.hw.ch1;/**
 * Created by Administrator on 2018/5/8.
 */
public class HasInterrputException {private static  class UseThread extends  Thread{public UseThread(String name){super(name);}@Override
        public void run() {while (!isInterrupted()){try {Thread.sleep(100);} catch (InterruptedException e) {System.out.println("the  flag  is "+isInterrupted());e.printStackTrace();interrupt();System.out.println("the  flag2  is "+isInterrupted());}}}
//        线程调用sleep方法后进入sleep状态,而sleep方法中java在实现的时候支持对中断标志位的检查,
//        一旦sleep方法检查到了中断标志位为true,就会终止sleep,并抛出这个InterruptedException。
//        方法里如果抛出InterruptedException,
//        线程的中断标志位会被复位成false,如果确定是需要中断线程,
//        要求我们自己在catch语句块里再次调用interrupt()
//        InterruptedException表示一个阻塞被中断了,阻塞包括sleep(),wait()

        public static void main(String[] args) throws InterruptedException {Thread endThread = new UseThread("HasInterrputEx");endThread.start();Thread.sleep(500);
// 为什么加上Thread.sleep(500),就会有异常发生,注释掉就没有呢
// 因为调用interrupt的时候,子线程甚至还么来的及初始化完成
            endThread.interrupt();}}
}

java 线程 中断标志位相关推荐

  1. 线程中断标志位 interrupt()、interrupted()、isInterrupted() 的认识

    常见问题 首先你是怎么去关闭一个开启的线程.调用中断方法之后,线程就立即停止运行吗? 带着这两个问题探讨一下,主要围绕着这三个方法讲述: interrupt().interrupted().isInt ...

  2. java线程锁标记_java 线程 中断标志位

    课程素材来自 http://enjoy.ke.qq.com/    版权所有 java线程中,线程中断方法详解: 线程自然终止:自然执行完或抛出未处理异常 stop(),resume(),suspen ...

  3. java线程中断和终止线程运行

    ava中启动一个线程很容易,通常情况下我们都是等到任务运行结束后让线程自行停止.但有时需要在任务正在运行时取消他们,使得线程快速结束.对此Java并没有提供任何机制.但是我们可以通过Java提供的线程 ...

  4. java中断runnable_详解Java 线程中断

    一.前言 大家肯定都使用过 Java 线程开发(Thread / Runnable),启动一个线程的做法通常是: new Thread(new Runnable( @Override public v ...

  5. java吵醒线程_一文搞懂 Java 线程中断

    在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程的方法吗?答案是肯定的,它就是我们今天要分 ...

  6. 一文搞懂 Java 线程中断

    转载自   一文搞懂 Java 线程中断 在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程 ...

  7. java线程——中断线程+线程状态+线程属性(优先级)

    [0]README 0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java线程--中断线程+线程状态+线程属性(优先级) 的相关知识: [1]中断线程 1.1 ...

  8. java sleep方法_一文搞懂 Java 线程中断!

    在之前的一文<如何"优雅"地终止一个线程>详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程的方法吗?答案是肯定的,它就是我们今天要分享 ...

  9. STM32的USART发送中断标志位USART_IT_TXE和USART_IT_TC

    与STM32的发送中断相关的标志位有USART_IT_TXE和USART_IT_TC. 根据ST芯片手册的信息可知,USART在发送移位寄存器(Transmit Shift Register)前面,还 ...

最新文章

  1. scikit-learn随机森林调参小结
  2. 【数字信号处理】线性常系数差分方程 ( 线性常系数差分方程 与 边界条件 总结 ) ★★★
  3. pytest第二版 进阶学习
  4. NOIp #2011
  5. swift 原生给h5发消息_Swift - 使用HTML5进行iOS开发(将HTML5打包成iOS应用)
  6. java thread lambda_Java8新特性--Lambda表达式
  7. php 筛选搜索,筛选——搜索
  8. 操作虚拟dom模拟react视图渲染
  9. HTML5的10大优势
  10. centos环境安装storm
  11. 存储ic载板_【行业亮点】看好载板供不应求趋势,深南/兴森/越亚积极布局
  12. 华为服务器怎么装win7系统教程视频教程,华为交换机配置教程|华为交换机配置视频教程完整版...
  13. matlab imrotate中心,MATLAB imrotate函数的用法
  14. Audified U73b 复古压缩器评测:带来复古温暖的色彩
  15. iOS Instrument使用之Core Animation(图形性能)
  16. Codeforces Round #439C 组合数-The Intriguing Obsession
  17. 入冬的寒冷让人更精神
  18. 三角形面积的两种计算方法
  19. STM32 EXTI外部中断及NVIC的抢占优先级和响应优先级解释
  20. pandas学习笔记—agg()函数详解

热门文章

  1. sudo -i 和sudo -s
  2. linux-top命令备忘
  3. Windows 8实用窍门系列:20.Windows 8中的GridView使用(二)和DataTemplateSelector
  4. 2021-10-27 - 开发人员将大多数时间花到了探究系统本身上
  5. 什么是附近推?附近推怎么投放?
  6. 华厦眼科上市:募资31亿市值393亿 挂靠厦门大学
  7. 【BZOJ4370】【IOI2015】horses 数据结构 平衡树+线段树
  8. 个人微信壁纸小程序正式上线
  9. 数据通信与计算机网络课后习题
  10. Java——StringUtils