课程素材来自 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 线程 中断标志位相关推荐

  1. java如何使用线程锁的_Java线程知识:二、锁的简单使用

    锁的初步认识 说到锁,相信大家都不陌生,这是我们生活中非常常见的一种东西,它的形状也各式各样.在生活中,我们通常用锁来锁住房子的大门.装宠物的笼子.装衣服的衣柜.以及装着我们一些小秘密的小抽屉.... ...

  2. java 线程 中断标志位

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

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

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

  4. python 线程锁 共享全局变量 线程通信

    python 线程锁 共享全局变量 线程通信 注意:全局变量不必做为参数传到函数里!!! import threading # 银行存钱和取钱 # 存钱1万次 def add():global mon ...

  5. 定时器中断标志位理解

    1.定时器中断标志位程序 ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT) { ITStatus bitstatus = RES ...

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

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

  7. STM32中事件标志位与中断标志位

    事件标志位:FlagStatus 中断标志位:ITStatus 当一个事件发生时,事件标志位由硬件置1,此时无论是否使能中断 若在此时使能中断将产生中断,其实中断标志已经被置1(产生事件的时候) 可见 ...

  8. java同步锁售票_Java基础学习笔记: 多线程,线程池,同步锁(Lock,synchronized )(Thread类,ExecutorService ,Future类)(卖火车票案例)...

    学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线程:线程是 ...

  9. java 线程锁概念_Java多线程——锁概念与锁优化

    为了性能与使用的场景,Java实现锁的方式有非常多.而关于锁主要的实现包含synchronized关键字.AQS框架下的锁,其中的实现都离不开以下的策略. 悲观锁与乐观锁 乐观锁.乐观的想法,认为并发 ...

最新文章

  1. [转]启动Tomcat提示:指定的服务未安装
  2. MacOS系统下简单安装以及配置MongoDB数据库(一)
  3. Swift 数字字符串格式化
  4. 面向对象-封装、继承、多态
  5. 用 TWebBrowser 查找网页上的按钮,编辑框,
  6. leetcode45. 跳跃游戏 II
  7. 将模板方法模式应用到kmeans聚类算法
  8. Delphi 对象的创建(create)与释放(free/destory)
  9. spin协议 matlab 仿真,无线传感器总结复习资料02016学生
  10. Exchange管理台 启动EMC报错及解决方法集合(持续更新中...)
  11. Atitit 图像处理—图像形态学(膨胀与腐蚀)
  12. 关于流行的几点思考——《引爆点》读书笔记
  13. 服务器装系统报0x0000005d,虚拟机不能安装Win10系统,提示your PC needs to restart,错误代码0x0000005D该怎么办-电脑自学网...
  14. 小猫爪:动手笔记01-FreeRTOS移植
  15. VB.NET模拟掷骰子
  16. 【最全】ISTQB- FL模拟题(含答案)
  17. 概率复习 第一章 基本概念
  18. Mac快速文字处理软件:Mellel
  19. CDOJ 1644 KKX Sequence
  20. Google浏览器网页,大部分网页出现无法加载样式

热门文章

  1. 数组对象的reduce方法
  2. laydate日期插件使用
  3. jQuery怎么改变img的src
  4. VirtualBox中使用双网卡实现CentOS既能上网(校园网)也能使用SSHclient
  5. C++11中新特性之:lambda 表达式
  6. POJ3628:Bookshelf 2【01背包】
  7. ubuntu 下安装mplayer
  8. Android svg VectorDrawable 动画效果
  9. Android研发中对String的思考(源码分析)
  10. EasyARM-iMX283A的Linux 开发环境构建