Park和unPark方法
目录
介绍
原理
例子
介绍
简而言之:
1.park和unpark是以线程为单位精确阻塞和唤醒线程的;
2.阻塞和唤醒的先后执行顺序可以不一样;
原理
park:counter相当于干粮(只有0或1两种状态),Parker相当于背包,_cond:相当于帐篷——>当干粮counter不够时,就会进入_cond帐篷;——>也就是线程进入帐篷中阻塞
而unPark:相当于补充干粮,但是不会溢出,所以说我们可以先执行unPark,再执行park,而park的线程也并不会阻塞;——>先设置counter为1,唤醒帐篷中的线程,然后将counter变为0
例子
package com.example.juc.Park;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.locks.LockSupport;import static java.lang.Thread.sleep;/*** @author diao 2022/4/10*/
@Slf4j(topic = "c.ParkTest01")
public class ParkTest01 {public static void main(String[] args) throws InterruptedException {Thread t1=new Thread(()->{log.debug("start...");try {sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}log.debug("开始park->t1线程...");LockSupport.park();log.debug("t1线程恢复过来了...");},"t1");t1.start();Thread.sleep(1000);log.debug("开始重新开启t1线程...");LockSupport.unpark(t1);}
}
Park和unPark方法相关推荐
- LockSupport 以及 park、unpark 方法
一.LockSupport 是 jsr 166 中新增的 juc 工具类. LockSupport 类主要用于创建锁和其他同步类来实现线程阻塞. 这个类与他使用的每个线程进行关联, 如果可用就立即 p ...
- Java LockSupport以及park、unpark方法源码深度解析
介绍了JUC中的LockSupport阻塞工具以及park.unpark方法的底层原理,从Java层面深入至JVM层面. 文章目录 1 LockSupport的概述 2 LockSupport的特征和 ...
- park和unpark方法详解
park和unpark方法详解 基于许可的多线程控制介绍 为了控制多个线程访问共享资源 ,我们需要为每个访问共享区间的线程派发一个许可.拿到一个许可的线程才能进入共享区间活动.当线程完成工作后,离开共 ...
- JDK1.8 Unsafe类中的park和unpark方法解析
park是Unsafe类中的native方法,LockSupport类通过调用Unsafe类的park和unpark提供了几个操作.Unsafe的park方法如下 public native void ...
- LockSupport的park和unpark的原理
我们知道各种并发框架如CountDownLatch.CyclicBarrier和Semaphore是基于AQS (AbstractQueuedSynchronizer)框架实现的,AQS框架借助于两个 ...
- Java并发学习(五)-LockSupport里面的park和unpark
学习AQS源码时候,发现当判断队列需要入队挂起时,都是调用LockSupport里面的park和unpark方法,例如: //park并且检查是否中断 private final boolean pa ...
- c语言goord函数,park、unpark、ord 函数使用方法(转)
park,unpark,ord这3个函数,在我们工作中,用到它们的估计不多. 我在最近一个工作中,因为通讯需要用到二进制流,然后接口用php接收.当时在处理时候,查阅不少资料.因为它们使用确实比较少, ...
- LockSupport的park和unpark
LockSupport是JDK中比较底层的类,用来创建锁和其他同步工具类的基本线程阻塞原语. Java锁和同步器框架的核心AQS:AbstractQueuedSynchronizer,就是通过调用Lo ...
- java帐篷_Java多线程之 Park和Unpark(十四)
介绍 Park 和 Unpark 均是 LockSupport 类中的方法 //暂停当前线程 LockSupport.park(); //恢复某个线程 LockSupport.unpark(暂停线程对 ...
最新文章
- 结对编程——单元测试
- 解决 “OperationalError: (sqlite3.OperationalError) no such table: ...“问题
- Atcoder AGC031B Reversi (DP计数)
- 【简洁易懂】为什么判断素数时只需要循环到该数的平方根
- 如何在一小时内更新100篇文章?-Evernote Sync插件介绍
- 超大图上的节点表征学习
- Delaunay三角化实现原理
- 接口——从事物的共同点出发
- sqlserver事务怎么开启 怎么提交 怎么回滚
- sublime text 显示 typescript高亮
- 高级语言程序设计(c语言版)课后答案,高级语言程序设计习题与解答(C语言版)/高等院校教材...
- win7如何设置自定义开关机背景图片
- 【从零开始学TVM】三,基于ONNX模型结构了解TVM的前端
- 基于三维WebGL技术的公安三维项目
- 手机新闻网站,手持移动新闻,手机报client,jQuery Mobile手机新闻网站,手机新闻网站demo,新闻阅读器开发...
- 医学影像工作站程序ProDicom的说明
- 弘辽科技:拼多多超时发货罚款规则是什么?具体介绍
- 使用wkhtmltopdf 将网页转PDF
- windows7蓝牙怎么打开_windows7系统如何调整字体大小
- 迅为iTop4412精英板运行QT程序触摸/鼠标失灵
热门文章
- 如何使linux用户下次登录强制修改密码
- ios和android操作收拾,iOS和Android后台机制的比较
- java毕业设计——基于java+Applet+access的综合测评系统设计与实现(毕业论文+程序源码)——综合测评系统
- FZU 2191 完美的数字
- Redis设计与实现之跳跃表
- 【MySQL 8.0 OCP 1Z0-908认证考试】 题库精讲--第一讲mysqlbackup
- LCD1602液晶使用介绍--(完整版)
- alias,unalias命令
- 未来人工智能技术的应用领域有哪些?
- android service什么时候销毁,阳光沙滩-android 通过AppWidgetProvider 启动的Service会自动销毁问题...