常用方法

  • 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代码地址

https://gitee.com/zhuayng/foundation-study/blob/develop/JavaBasis/JUC/src/main/java/com/yxkj/juc/c_000/InterruptDemo.java

Thread的打断的更多相关文章

  1. 【转】 C#中Finally的一个不太常见的用法

    原文地址:http://www.cnblogs.com/listhome/p/3664300.html 最近在看.net BCL 传送门 的源码. 在 System.Collections.Concu ...

  2. C#中Finally的一个不太常见的用法

    最近在看.net BCL 传送门 的源码. 在 System.Collections.Concurrent.ConcurrentQueue 中看到一段有意思的代码.注意这段代码是写在Concurren ...

  3. System.currentTimeMillis()与SystemClock.uptimeMillis()

    1.System.currentTimeMillis()获取的是系统的时间,可以使用SystemClock.setCurrentTimeMillis(long millis)进行设置.如果使用Syst ...

  4. Java多线程:线程间通信之Lock

    Java 5 之后,Java在内置关键字sychronized的基础上又增加了一个新的处理锁的方式,Lock类. 由于在Java线程间通信:volatile与sychronized中,我们已经详细的了 ...

  5. JUC中Lock和ReentrantLock介绍及源码解析

    Lock框架是jdk1.5新增的,作用和synchronized的作用一样,所以学习的时候可以和synchronized做对比.在这里先和synchronized做一下简单对比,然后分析下Lock接口 ...

  6. 十一、java线程

    目录: 一.线程的基本概念 二.线程的创建和启动 三.线程的调度和优先级 四.线程的状态控制 五.线程同步 一.线程的基本概念 线程是一个程序内部的顺序控制流 线程和进程的区别: 每个进程都由独立的代 ...

  7. Java中的线程状态转换和线程控制常用方法

    Java 中的线程状态转换: [注]:不是 start 之后就立刻开始执行, 只是就绪了(CPU 可能正在运行其他的线程). [注]:只有被 CPU 调度之后,线程才开始执行, 当 CPU 分配给你的 ...

  8. 第一章 - Java与线程

    目录 01.Java和线程 02.Java与协程 03.CPU缓存结构和java内存模型 04.管程-悲观锁和锁优化 05.乐观锁 - 无锁方案 06.线程安全 07.线程池 08.JUC 09.高并 ...

  9. JNI-从jvm源码分析Thread.interrupt的系统级别线程打断原理

    前言 在java编程中,我们经常会调用Thread.sleep()方法使得线程停止运行一段时间,而Thread类中也提供了interrupt方法供我们去主动打断一个线程.那么线程挂起和打断的本质究竟是 ...

随机推荐

  1. Java线程安全MAP ,LIST ,SET

    ConcurrentHashMap是线程安全的HashMap, CopyOnWriteArrayList是线程安全的ArrayList CopyOnWriteArraySet是线程安全的Set.

  2. 「算法笔记」旋转 Treap

    一.引入 随机数据中,BST 一次操作的期望复杂度为 \(\mathcal{O}(\log n)\). 然而,BST 很容易退化,例如在 BST 中一次插入一个有序序列,将会得到一条链,平均每次操作的 ...

  3. IOS 如何获取app更新链接 如【itms-apps://itunes.apple.com/cn/app/id1362432761?mt=8】

    这是iTunes接口地址 ,有兴趣可以看一下,我们要用到的接口如下,xxx 处换成自己 App 的 AppId ,AppId 可以在 iTunes Connect 里面看到. http://itune ...

  4. CS学习资料百度云链接

    CS学习资料百度云链接 [0]Springboot微服务开发天气预报系统视频教程https://pan.baidu.com/s/1joz7flyztCq8oklBlsz8dQ提取密码:cpz7 [1] ...

  5. CS5211完全替代兼容LT7211|PS8625|CH7511方案|EDP转LVDS|Capstone CS5211

    CH7511|LT7211|PS8625替代方案--Capstone CS5211AN 设计EDP转LVDS优势方案原理图+PCB板设计 CH7511|LT7211|PS8625这三款都是专门用于设计 ...

  6. UML的定义和组成详细介绍

    目录 1.UML 1.1概述 1.2 UML是一种建模语言 1.3 UML语言包含三方面 2.UML支持软件体系结构建模 2.1 逻辑视图 2.2 实现(开发)视图 2.3 部署视图 2.4 过程视图 ...

  7. docker学习:docker---kafka安装

    下载zookeeper镜像与kafka镜像: docker pull wurstmeister/zookeeper docker pull wurstmeister/kafka 本地启动zookeep ...

  8. VMware客户端vSphereClient新建虚拟机

    1.说明 VMware客户端工具vSphere Client, 用来连接和管理ESX或ESXi主机(下面称为宿主机), 可以方便的创建.管理虚拟机,并分配相应的资源.宿主机就是使用虚拟化软件运行虚拟机 ...

  9. 使用docker或者docker-compose部署Zookeeper集群

    之前有介绍过Zookeeper的安装部署(Zookeeper基础教程(二):Zookeeper安装),但是那里我是基于独立的虚拟机来实现部署的,这种部署方式适合线上集群部署.后来有几次想用一下Zook ...

  10. centos7 查看卸载软件

    rpm -e xxx查不到就用下面的 # 查询软件列表# rpm -qa | grep 软件名rpm -qa | grep maxscale # 卸载软件# sudo yum remove 软件名su ...