java线程锁标记_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
看代码吧
packagecom.hw.ch1;
/*** Created by Administrator on 2018/5/8.*/public classHasInterrputException {
private static classUseThread extendsThread{
publicUseThread(String name){
super(name);
}
@Overridepublic voidrun() {
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 voidmain(String[] args) throwsInterruptedException {
Thread endThread = newUseThread("HasInterrputEx");
endThread.start();
Thread.sleep(500);
// 为什么加上Thread.sleep(500),就会有异常发生,注释掉就没有呢// 因为调用interrupt的时候,子线程甚至还么来的及初始化完成endThread.interrupt();
}
}
}
java线程锁标记_java 线程 中断标志位相关推荐
- java如何使用线程锁的_Java线程知识:二、锁的简单使用
锁的初步认识 说到锁,相信大家都不陌生,这是我们生活中非常常见的一种东西,它的形状也各式各样.在生活中,我们通常用锁来锁住房子的大门.装宠物的笼子.装衣服的衣柜.以及装着我们一些小秘密的小抽屉.... ...
- java 线程 中断标志位
课程素材来自 http://enjoy.ke.qq.com/ 版权所有 java线程中,线程中断方法详解: 线程自然终止:自然执行完或抛出未处理异常 stop(),resume(),suspen ...
- 线程中断标志位 interrupt()、interrupted()、isInterrupted() 的认识
常见问题 首先你是怎么去关闭一个开启的线程.调用中断方法之后,线程就立即停止运行吗? 带着这两个问题探讨一下,主要围绕着这三个方法讲述: interrupt().interrupted().isInt ...
- python 线程锁 共享全局变量 线程通信
python 线程锁 共享全局变量 线程通信 注意:全局变量不必做为参数传到函数里!!! import threading # 银行存钱和取钱 # 存钱1万次 def add():global mon ...
- 定时器中断标志位理解
1.定时器中断标志位程序 ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT) { ITStatus bitstatus = RES ...
- STM32的USART发送中断标志位USART_IT_TXE和USART_IT_TC
与STM32的发送中断相关的标志位有USART_IT_TXE和USART_IT_TC. 根据ST芯片手册的信息可知,USART在发送移位寄存器(Transmit Shift Register)前面,还 ...
- STM32中事件标志位与中断标志位
事件标志位:FlagStatus 中断标志位:ITStatus 当一个事件发生时,事件标志位由硬件置1,此时无论是否使能中断 若在此时使能中断将产生中断,其实中断标志已经被置1(产生事件的时候) 可见 ...
- java同步锁售票_Java基础学习笔记: 多线程,线程池,同步锁(Lock,synchronized )(Thread类,ExecutorService ,Future类)(卖火车票案例)...
学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线程:线程是 ...
- java 线程锁概念_Java多线程——锁概念与锁优化
为了性能与使用的场景,Java实现锁的方式有非常多.而关于锁主要的实现包含synchronized关键字.AQS框架下的锁,其中的实现都离不开以下的策略. 悲观锁与乐观锁 乐观锁.乐观的想法,认为并发 ...
最新文章
- [转]启动Tomcat提示:指定的服务未安装
- MacOS系统下简单安装以及配置MongoDB数据库(一)
- Swift 数字字符串格式化
- 面向对象-封装、继承、多态
- 用 TWebBrowser 查找网页上的按钮,编辑框,
- leetcode45. 跳跃游戏 II
- 将模板方法模式应用到kmeans聚类算法
- Delphi 对象的创建(create)与释放(free/destory)
- spin协议 matlab 仿真,无线传感器总结复习资料02016学生
- Exchange管理台 启动EMC报错及解决方法集合(持续更新中...)
- Atitit 图像处理—图像形态学(膨胀与腐蚀)
- 关于流行的几点思考——《引爆点》读书笔记
- 服务器装系统报0x0000005d,虚拟机不能安装Win10系统,提示your PC needs to restart,错误代码0x0000005D该怎么办-电脑自学网...
- 小猫爪:动手笔记01-FreeRTOS移植
- VB.NET模拟掷骰子
- 【最全】ISTQB- FL模拟题(含答案)
- 概率复习 第一章 基本概念
- Mac快速文字处理软件:Mellel
- CDOJ 1644 KKX Sequence
- Google浏览器网页,大部分网页出现无法加载样式