目录

介绍

原理

例子


介绍

简而言之:

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方法相关推荐

  1. LockSupport 以及 park、unpark 方法

    一.LockSupport 是 jsr 166 中新增的 juc 工具类. LockSupport 类主要用于创建锁和其他同步类来实现线程阻塞. 这个类与他使用的每个线程进行关联, 如果可用就立即 p ...

  2. Java LockSupport以及park、unpark方法源码深度解析

    介绍了JUC中的LockSupport阻塞工具以及park.unpark方法的底层原理,从Java层面深入至JVM层面. 文章目录 1 LockSupport的概述 2 LockSupport的特征和 ...

  3. park和unpark方法详解

    park和unpark方法详解 基于许可的多线程控制介绍 为了控制多个线程访问共享资源 ,我们需要为每个访问共享区间的线程派发一个许可.拿到一个许可的线程才能进入共享区间活动.当线程完成工作后,离开共 ...

  4. JDK1.8 Unsafe类中的park和unpark方法解析

    park是Unsafe类中的native方法,LockSupport类通过调用Unsafe类的park和unpark提供了几个操作.Unsafe的park方法如下 public native void ...

  5. LockSupport的park和unpark的原理

    我们知道各种并发框架如CountDownLatch.CyclicBarrier和Semaphore是基于AQS (AbstractQueuedSynchronizer)框架实现的,AQS框架借助于两个 ...

  6. Java并发学习(五)-LockSupport里面的park和unpark

    学习AQS源码时候,发现当判断队列需要入队挂起时,都是调用LockSupport里面的park和unpark方法,例如: //park并且检查是否中断 private final boolean pa ...

  7. c语言goord函数,park、unpark、ord 函数使用方法(转)

    park,unpark,ord这3个函数,在我们工作中,用到它们的估计不多. 我在最近一个工作中,因为通讯需要用到二进制流,然后接口用php接收.当时在处理时候,查阅不少资料.因为它们使用确实比较少, ...

  8. LockSupport的park和unpark

    LockSupport是JDK中比较底层的类,用来创建锁和其他同步工具类的基本线程阻塞原语. Java锁和同步器框架的核心AQS:AbstractQueuedSynchronizer,就是通过调用Lo ...

  9. java帐篷_Java多线程之 Park和Unpark(十四)

    介绍 Park 和 Unpark 均是 LockSupport 类中的方法 //暂停当前线程 LockSupport.park(); //恢复某个线程 LockSupport.unpark(暂停线程对 ...

最新文章

  1. 结对编程——单元测试
  2. 解决 “OperationalError: (sqlite3.OperationalError) no such table: ...“问题
  3. Atcoder AGC031B Reversi (DP计数)
  4. 【简洁易懂】为什么判断素数时只需要循环到该数的平方根
  5. 如何在一小时内更新100篇文章?-Evernote Sync插件介绍
  6. 超大图上的节点表征学习
  7. Delaunay三角化实现原理
  8. 接口——从事物的共同点出发
  9. sqlserver事务怎么开启 怎么提交 怎么回滚
  10. sublime text 显示 typescript高亮
  11. 高级语言程序设计(c语言版)课后答案,高级语言程序设计习题与解答(C语言版)/高等院校教材...
  12. win7如何设置自定义开关机背景图片
  13. 【从零开始学TVM】三,基于ONNX模型结构了解TVM的前端
  14. 基于三维WebGL技术的公安三维项目
  15. 手机新闻网站,手持移动新闻,手机报client,jQuery Mobile手机新闻网站,手机新闻网站demo,新闻阅读器开发...
  16. 医学影像工作站程序ProDicom的说明
  17. 弘辽科技:拼多多超时发货罚款规则是什么?具体介绍
  18. 使用wkhtmltopdf 将网页转PDF
  19. windows7蓝牙怎么打开_windows7系统如何调整字体大小
  20. 迅为iTop4412精英板运行QT程序触摸/鼠标失灵

热门文章

  1. 如何使linux用户下次登录强制修改密码
  2. ios和android操作收拾,iOS和Android后台机制的比较
  3. java毕业设计——基于java+Applet+access的综合测评系统设计与实现(毕业论文+程序源码)——综合测评系统
  4. FZU 2191 完美的数字
  5. Redis设计与实现之跳跃表
  6. 【MySQL 8.0 OCP 1Z0-908认证考试】 题库精讲--第一讲mysqlbackup
  7. LCD1602液晶使用介绍--(完整版)
  8. alias,unalias命令
  9. 未来人工智能技术的应用领域有哪些?
  10. android service什么时候销毁,阳光沙滩-android 通过AppWidgetProvider 启动的Service会自动销毁问题...