首页 > 其他分享 >LockSupport与线程中断

LockSupport与线程中断

时间:2023-05-28 21:11:28浏览次数:40  
标签:标记 中断 LockSupport 线程 interrupt 方法

1 LockSupport是什么

LockSupport是用来创建锁和其他同步类的基本阻塞原语。

park方法可以阻塞线程,unpark方法可以唤醒线程。与object的wait和notify不同的是,不需要synchonized的限制,没有先后顺序的限制。

2 线程中断

线程不应该被其他线程中断,应该自己中断。

线程的三个中断方法

interrupt方法:通知目标线程中断,也就是设置目标线程的中断标记为ture,不做其他处理的话,线程还会继续运行。

isInterrupted方法: 判断线程是否中断

interrupeted方法:是静态方法,返回线程当前的中断状态,并且会清除中断标记。

 

3细节点

如果线程处于被阻塞状态(例如处于sleep, wait, join 等状态),在别的线程中调用当前线程对象的interrupt方法,
那么线程将立即退出被阻塞状态,并抛出一个InterruptedException异常。

try cache时,线程中断标记会被清除,如果需要中断,需要进行Thread.currentThread().interrupt(),重新设置中断标记。

 

上图

 

标签:标记,中断,LockSupport,线程,interrupt,方法
From: https://www.cnblogs.com/yumx/p/17438850.html

相关文章

  • 2023-05-28:为什么Redis-单线程模型效率也能那么高?
    2023-05-28:为什么Redis-单线程模型效率也能那么高?答案2023-05-28:1.C语言实现,效率高C语言程序运行速度快,因为其相较于其他高级语言更加接近底层机器。由于C语言直接操作内存,不会像其他语言那样依赖虚拟机或垃圾回收机制等中间层,从而能够实现更高的执行效率。2.单线程的优势Redis采用......
  • 深入理解 Java 虚拟机 —— Java 内存模型与线程
    处理器的效率和一致性(与java内存访问可类比)计算机同时去做几件事情,不仅是因为计算机的运算能力强大了,还有一个很重要的原因是计算机的运算速度与它的存储和通信子系统的速度差距太大,大量的时间都花费在磁盘I/O、网络通信或者数据库访问上。如果不希望处理器在大部分时间里都处......
  • 新建T1,T2,T3线程,如何保证它们执行的顺序性
    在多线程中有多种方法让线程按特定顺序执行,可以用线程类的join()方法在一个线程中启动另一个线程,另外一个线程完成该线程继续执行。  ......
  • 线程的六种转态
    线程有六种状态:新建:当线程被创建时,还没有调用start()方法。可运行:调用start()方法后,等待CPU调度。阻塞:线程没有获取到锁进入阻塞状态。等待:线程获取到锁之后由于条件不满足调用wait()方法后释放锁进入等待状态,当其它持有锁的线程调用notify()或者notifyAll()方法才能唤醒该线程,进入可运......
  • python - 进程与线程 -2
    1.线程一个进程可以包含多个线程,一条线程就是进程中一个单一顺序的控制流。一个进程中可以并发多个线程,每条线程执行不同的任务。1.1使用Thread创建线程importthreadingimporttimedeftask():foriinrange(3):time.sleep(1)print(f"线程名:{th......
  • python - 进程与线程 -1
    多任务就是操作系统能同时执行多个程序,比如:看电影,聊天,查看网页。进程(process)是计算机中已经运行程序的实体,一个任务就是一个进程。1.使用multiprocessing模块创建进程1.1用Process类创建进程在这个模块中有一个Process类代表一个进程对象:Process(group=None,target=None,......
  • 线程
    并发,并行,串行的区别并发:指的同一个时间间隔内发生,交替执行并行:两个任务同一时刻同时执行,互不干扰串行:一个任务接着一个任务执行,只能等前一个执行完毕,下一个才能执行并发的三大特性原子性:操作过程中,要么所有操作都执行,要么都不执行可见性:一个线程对于......
  • python3多线程
    1、线程和进程计算机资源,指的是cpu计算资源、内存资源、接口读写资源等。进程:计算机中用于分配资源的最小个体。不同进程之间并不共享内存。线程:是进程内部的资源分配对象,一个进程最少会有一个线程。同一进程下的不同线程可以共享内存。2、并行和并发并行:同一时间段,交替前行。并......
  • java面试 (12)- Valiolate原理?是线程安全的吗?
    1:导致线程问题的原因:抢占式执行多个线程同时修改了同一个变量非原子性操作内存可见性问题指令重排问题2:并发编程三大特性可见性原子性有序性3:volatile关键字3.1volatile解决了内存可见性和指令重排序的问题写volatile变......
  • wait,notify,notifyAll,sleep,join等线程方法的全方位演练
    一、概念解释1.进入阻塞:有时我们想让一个线程或多个线程暂时去休息一下,可以使用wait(),使线程进入到阻塞状态,等到后面用到它时,再使用notify()、notifyAll()唤醒它,线程被唤醒后,会等待CPU调度。不过需要注意的是:在执行wait()方法前必须先拿到这个对象的monitor锁。2.线程......