首页 > 其他分享 >24.park和unpark方法

24.park和unpark方法

时间:2024-03-27 22:33:18浏览次数:23  
标签:24 调用 Thread park t1 unpark 线程

1.park方法可以暂停线程,线程状态为wait。

2.unpark方法可以恢复线程,线程状态为runnable。

3.LockSupport的静态方法。

4.park和unpark方法调用不分先后,unpark先调用,park后执行也可以恢复线程。

public class ParkDemo {

    public static void main(String[] args) {
        Thread t1 = new Thread(() -> {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("线程t1->park....");
            LockSupport.park(); //对应的线程状态wait
            System.out.println("线程t1恢复运行....");

        }, "t1");
        t1.start();

        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("线程t1->unpark....");
        LockSupport.unpark(t1);

    }
}

public class ParkDemo {

    public static void main(String[] args) {
        Thread t1 = new Thread(() -> {
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("线程t1->park....");
            LockSupport.park(); //对应的线程状态wait
            System.out.println("线程t1恢复运行....");

        }, "t1");
        t1.start();

        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("线程t1->unpark....");
        LockSupport.unpark(t1);

    }
}

5.park,unpark与wait,notify方法比较

  • wait和notify必须要结合Object Monitor(synchronized锁)一起使用,而unpark和park则不需要。
  • unpark是对指定线程进行唤醒,而notify是对任意一个等待线程唤醒,notifyAll是对所有等待的线程进行唤醒,没有那么精确。
  • park与unpark,可以先unpark。而wait和notify,不能先notify。

6.park和unpark的底层原理(解释两个方法调用不分先后)

当线程调用park方法,检查_counter,如果为0,就获得_mutex互斥锁,线程进入_cond条件变量阻塞,然后再设置_counter=0。

当线程调用unpark的时候,把_counter设置为1,唤醒_cond阻塞队列中的线程,线程就恢复运行,又会把_counter设置为0。

如果先调用unpark方法,后调用park方法的原理分析:

调用unpark方法,_counter=1,_cond没有阻塞的线程,就结束了。然后调用的park方法,发现unpark=1,此时线程无需阻塞继续运行,然后设置_counter=0。

标签:24,调用,Thread,park,t1,unpark,线程
From: https://blog.csdn.net/qq_36352889/article/details/137090496

相关文章

  • 自学(网络安全)黑客——高效学习2024
    01什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有W......
  • 2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n
    2024-03-27:用go语言,多维费用背包。给你一个二进制字符串数组strs和两个整数m和n,请你找出并返回strs的最大子集的长度,该子集中最多有m个0和n个1。如果x的所有元素也是y的元素,集合x是集合y的子集。输入:strs=["10","0001","111001","1","0"],m=......
  • 【题解】P10235 [yLCPC2024] C. 舞萌基本练习
    P10235舞萌基本练习题解思路看到最大值最小首先考虑二分答案。由于答案满足单调性,可以二分不优美度的最大值,也就是逆序对数的最大值。我们在每次增加一个元素的时候都要求解当前区间的逆序对数,所以不能用归并排序求逆序对数,考虑树状数组解法。如果不会树状数组求逆序对,请出......
  • 20231325贾罗祁 2023-2024-2《Python程序设计》实验二报告
    20231325贾罗祁2023-2024-2《Python程序设计》实验二报告课程:《Python程序设计》班级:2313姓名:贾罗祁学号:20231325实验教师:王志强实验日期:2024年3月27日必修/选修:公选课1.实验内容设计并完成一个完整的应用程序,完成加减乘除模等运算,功能多多益善;考核基本语法、判定......
  • .NET周刊【3月第3期 2024-03-24】
    国内文章Garnet:力压Redis的C#高性能分布式存储数据库https://www.cnblogs.com/InCerry/p/18083820/garnet_introduce微软研究院开源了一个名为Garnet的C#项目,实现了Redis协议,允许客户端无需修改直接替换Redis。Garnet基于C#.NET8.0开发,致力于提供极速、可扩展和低延迟的缓存......
  • 20240327打卡
    第五周第一天第二天第三天第四天第五天第六天第七天所花时间20h4h4h代码量(行)877164371博客量(篇)111知识点了解navigation路由配置,jetpackcompose组件运用,容器封装第一次结对作业开始Web搓后端ing~主要完成了用户登录与管......
  • 20240320-2-线性回归+逻辑回归
    线性回归于逻辑回归面试题1.简单介绍一下线性回归。**线性回归(LinearRegression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。**这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称......
  • 2024最新梦想贩卖机,变现宝知识付费小程序(修改版本+前后端)
    想贩卖机升级版,变现宝吸取了资源变现类产品的很多优点,摒弃了那些无关紧要的东西,使本产品在运营和变现能力上,实现了质的超越。多领域素材资源知识变现营销裂变独立版。实现流量互导,多渠道变现。独立部署,可绑自有独立域名不限制域   网盘下载链接:https://47.95.205.7/?p......
  • 7-24 约分最简分式(PTA)
    题目:分数可以表示为分子/分母的形式。编写一个程序,要求用户输入一个分数,然后将其约分为最简分式。最简分式是指分子和分母不具有可以约分的成分了。如6/12可以被约分为1/2。当分子大于分母时,不需要表达为整数又分数的形式,即11/8还是11/8;而当分子分母相等时,仍然表达为1/1的分数......
  • 个人简历 - java开发版本 (24应届毕业生 - 找工作!)
    老板们觉得合适的请联系一下哦~感恩!求职目标: java开发工程师基本信息:姓名: 付盟                                           性别: 男生日: 2001年12月13日                  年龄:22岁邮箱:181202......