Thread的打断
常用方法
- public void interrupt()
t.interrupt() 打断t线程(设置t线程某给标志位f=true,并不是打断线程的运行),不能打断正在竞争锁的线程。 - public boolean isInterrupted()
t.isInterrupted() 查询打断标志位是否被设置(是不是曾经被打断过)。 - public static boolean interrupted()
Thread.interrupted() 查看“当前”线程是否被打断,如果被打断,恢复标志位。 - lockInterruptibly()
可以打断正在竞争锁的线程synchronized()。
代码
public void interrupt(){
//判断当前线程是否被打断
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
//睡眠时,被打断时自动恢复
e.printStackTrace();
//再次打断
Thread.currentThread().interrupt();
}
boolean interrupted = Thread.currentThread().isInterrupted();
System.out.println("当前线程是否被打断1--->"+interrupted);
//查看“当前”线程是否被打断,如果被打断,恢复标志位
boolean interrupted1 = Thread.interrupted();
System.out.println("当前线程是否被打断2--->"+interrupted1);
boolean interrupted3 = Thread.currentThread().isInterrupted();
System.out.println("当前线程是否被打断3--->"+interrupted3);
}
public void demo(){
InterruptDemo interrupt=new InterruptDemo();
Thread t1 = new Thread(interrupt::interrupt, "t1");
t1.start();
//打断t线程(设置t线程某给标志位f=true,并不是打断线程的运行)
t1.interrupt();
}
Gitee代码地址
Thread的打断的更多相关文章
- 【转】 C#中Finally的一个不太常见的用法
原文地址:http://www.cnblogs.com/listhome/p/3664300.html 最近在看.net BCL 传送门 的源码. 在 System.Collections.Concu ...
- C#中Finally的一个不太常见的用法
最近在看.net BCL 传送门 的源码. 在 System.Collections.Concurrent.ConcurrentQueue 中看到一段有意思的代码.注意这段代码是写在Concurren ...
- System.currentTimeMillis()与SystemClock.uptimeMillis()
1.System.currentTimeMillis()获取的是系统的时间,可以使用SystemClock.setCurrentTimeMillis(long millis)进行设置.如果使用Syst ...
- Java多线程:线程间通信之Lock
Java 5 之后,Java在内置关键字sychronized的基础上又增加了一个新的处理锁的方式,Lock类. 由于在Java线程间通信:volatile与sychronized中,我们已经详细的了 ...
- JUC中Lock和ReentrantLock介绍及源码解析
Lock框架是jdk1.5新增的,作用和synchronized的作用一样,所以学习的时候可以和synchronized做对比.在这里先和synchronized做一下简单对比,然后分析下Lock接口 ...
- 十一、java线程
目录: 一.线程的基本概念 二.线程的创建和启动 三.线程的调度和优先级 四.线程的状态控制 五.线程同步 一.线程的基本概念 线程是一个程序内部的顺序控制流 线程和进程的区别: 每个进程都由独立的代 ...
- Java中的线程状态转换和线程控制常用方法
Java 中的线程状态转换: [注]:不是 start 之后就立刻开始执行, 只是就绪了(CPU 可能正在运行其他的线程). [注]:只有被 CPU 调度之后,线程才开始执行, 当 CPU 分配给你的 ...
- 第一章 - Java与线程
目录 01.Java和线程 02.Java与协程 03.CPU缓存结构和java内存模型 04.管程-悲观锁和锁优化 05.乐观锁 - 无锁方案 06.线程安全 07.线程池 08.JUC 09.高并 ...
- JNI-从jvm源码分析Thread.interrupt的系统级别线程打断原理
前言 在java编程中,我们经常会调用Thread.sleep()方法使得线程停止运行一段时间,而Thread类中也提供了interrupt方法供我们去主动打断一个线程.那么线程挂起和打断的本质究竟是 ...
随机推荐
- git 上传项目到远程仓库
电脑安装git客户端.注册github账号并登陆 到本地项目文件夹右键选择git bash here 输入个人信息(代码提交者) git config --global user.name " ...
- Interval Bound Propagation (IBP)
目录 概 主要内容 IBP CROWN CROWN-IBP 训练的技巧 写在最后 代码 Gowal S., Dvijotham K., Stanforth R., Bunel R., Qin C., ...
- <数据结构>图的构建与基本遍历方法
目录 建立一个图 邻接矩阵 邻接表 深度优先遍历(DFS) 具体步骤: 第一部分:给定结点u,遍历u所在的连通块的所有结点 第二部分:对图G所有结点进行第一部分的操作,即遍历了图的所有连通分量 伪代码 ...
- 记录一次乱码问题修复经历!排查修复Poi-tl使用HttpServletResponse导出Word乱码问题
问题 Poi-tl中HttpServletResponse导出Word乱码问题: 文件名使用中文,中文名乱码 导出的文件下载后乱码 原因 文件名中文乱码: 没有设置文件名的编码规则 文件下载乱码: 在 ...
- 「MySql高级查询与编程」练习:企业员工管理
题目:企业员工管理 一.语言和环境 1.实现语言:SQL. 2.开发环境:MySQL,navicat for mysql. 二.题目(100分): 1.创建数据库及数据表: (1)创建数据库,名称为d ...
- Vue.js高效前端开发知识 • 【目录】
持续更新中- 章节 内容 实践练习 Vue.js高效前端开发 • (实践练习) 第1章 Vue.js高效前端开发 • [ 一.初识Vue.js ] 第2章 Vue.js高效前端开发 • [ 二.Vue ...
- Java实习生常规技术面试题每日十题Java基础(四)
目录 1.String 和StringBuffer的区别. 2.数组有没有length()这个方法? String有没有length()这个方法? 3.final, finally, finalize ...
- 大二 mysql高级+html响应式+Java高级50道试题
1.CSS3中过渡属性 transition-timing-function的值包括哪些 A. ease B. inline C. ease-in D. easeout 答案:A,C 解析:过渡属性 ...
- 使用 jQuery对象设置页面中 <ul> 元素的标记类型,并使用 DOM 对象设置 <li> 元素的浮动属性和右边距。使用jQuery 对象和 DOM 对象设置页面元素属性
查看本章节 查看作业目录 需求说明: 使用 jQuery对象设置页面中 <ul> 元素的标记类型,并使用 DOM 对象设置 <li> 元素的浮动属性和右边距.使用jQuery ...
- SpringBoot集成MyBatis-Plus框架
1.说明 本文介绍Spring Boot集成MyBatis-Plus框架, 重点介绍需要注意的地方, 是SpringBoot集成MyBatis-Plus框架详细方法 这篇文章的脱水版, 主要是三个步骤 ...