java 线程 中断标志位
课程素材来自 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 线程 中断标志位相关推荐
- 线程中断标志位 interrupt()、interrupted()、isInterrupted() 的认识
常见问题 首先你是怎么去关闭一个开启的线程.调用中断方法之后,线程就立即停止运行吗? 带着这两个问题探讨一下,主要围绕着这三个方法讲述: interrupt().interrupted().isInt ...
- java线程锁标记_java 线程 中断标志位
课程素材来自 http://enjoy.ke.qq.com/ 版权所有 java线程中,线程中断方法详解: 线程自然终止:自然执行完或抛出未处理异常 stop(),resume(),suspen ...
- java线程中断和终止线程运行
ava中启动一个线程很容易,通常情况下我们都是等到任务运行结束后让线程自行停止.但有时需要在任务正在运行时取消他们,使得线程快速结束.对此Java并没有提供任何机制.但是我们可以通过Java提供的线程 ...
- java中断runnable_详解Java 线程中断
一.前言 大家肯定都使用过 Java 线程开发(Thread / Runnable),启动一个线程的做法通常是: new Thread(new Runnable( @Override public v ...
- java吵醒线程_一文搞懂 Java 线程中断
在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程的方法吗?答案是肯定的,它就是我们今天要分 ...
- 一文搞懂 Java 线程中断
转载自 一文搞懂 Java 线程中断 在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程 ...
- java线程——中断线程+线程状态+线程属性(优先级)
[0]README 0.1) 本文描述转自 core java volume 1, 源代码为原创,旨在理解 java线程--中断线程+线程状态+线程属性(优先级) 的相关知识: [1]中断线程 1.1 ...
- java sleep方法_一文搞懂 Java 线程中断!
在之前的一文<如何"优雅"地终止一个线程>详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程的方法吗?答案是肯定的,它就是我们今天要分享 ...
- STM32的USART发送中断标志位USART_IT_TXE和USART_IT_TC
与STM32的发送中断相关的标志位有USART_IT_TXE和USART_IT_TC. 根据ST芯片手册的信息可知,USART在发送移位寄存器(Transmit Shift Register)前面,还 ...
最新文章
- scikit-learn随机森林调参小结
- 【数字信号处理】线性常系数差分方程 ( 线性常系数差分方程 与 边界条件 总结 ) ★★★
- pytest第二版 进阶学习
- NOIp #2011
- swift 原生给h5发消息_Swift - 使用HTML5进行iOS开发(将HTML5打包成iOS应用)
- java thread lambda_Java8新特性--Lambda表达式
- php 筛选搜索,筛选——搜索
- 操作虚拟dom模拟react视图渲染
- HTML5的10大优势
- centos环境安装storm
- 存储ic载板_【行业亮点】看好载板供不应求趋势,深南/兴森/越亚积极布局
- 华为服务器怎么装win7系统教程视频教程,华为交换机配置教程|华为交换机配置视频教程完整版...
- matlab imrotate中心,MATLAB imrotate函数的用法
- Audified U73b 复古压缩器评测:带来复古温暖的色彩
- iOS Instrument使用之Core Animation(图形性能)
- Codeforces Round #439C 组合数-The Intriguing Obsession
- 入冬的寒冷让人更精神
- 三角形面积的两种计算方法
- STM32 EXTI外部中断及NVIC的抢占优先级和响应优先级解释
- pandas学习笔记—agg()函数详解