LockSupport的park方法和unpark方法

本文介绍了Java中LockSupport的park和unpark方法。park方法会导致当前线程被阻塞,而unpark可以唤醒被阻塞的线程。调用unpark的次数不影响park的效果,仅能防止一次park调用导致的阻塞。同时,即使线程在park期间被interrupt,也不会立即响应中断,仍会继续运行。
摘要由CSDN通过智能技术生成

1.park

调用方法一般为:LockSupport.park();//当前线程阻塞

2.unpark

调用方法一般为: LockSupport.unpark(w1);//唤醒当前线程

3.调用顺序

当线程先调用了unpark方法后,该线许可为true,当线程进入到park,判断为true,继续运行

4.多次调用

多次调用unpark方法和调用一次unpark方法效果一样,因为在源码里面都是直接将_counter赋值为1,而不是加1。简单说就是:线程A连续调用两次LockSupport.unpark(B)方法唤醒线程B,然后线程B调用两次LockSupport.park()方法, 线程B依旧会被阻塞。因为两次unpark调用效果跟一次调用一样,只能让线程B的第一次调用park方法不被阻塞,第二次调用依旧会阻塞

5.interrupt相应标志位对park不阻塞

public class LockPark {
   

    private static class WorK extends Thread{
   
        private String name;
        public WorK(String name){
   
            
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值