LockSupport详解
创始人
2024-11-14 09:37:55
0

文章目录

    • 理解可重入锁
    • LockSupport
      • 线程等待唤醒机制(wait/notify)
    • waitNotify限制
    • awaitSignal限制
      • LockSupport重点说明

理解可重入锁

可重入锁的种类:

  • 隐式锁(即synchronized关键字使用的锁)默认是可重入锁。
    • 同步代码块
    • 同步方法
  • Synchronized的重入的实现机理。
  • 显式锁(即Lock)也有ReentrantLock这样的可重入锁。

隐式锁(synchronized关键字使用的锁)默认是可重入锁

LockSupport

  1. 为什么要学习LockSupport
    1. Java -------jvm
    2. JUC ------- AQS ------> (前置知识、可重入锁、LockSupport)
  2. 学习方法
    1. 是什么
    2. 能干吗
    3. 去哪下
    4. 怎么玩
  3. AB -> after/ before
    9

线程等待唤醒机制(wait/notify)

3种让线程等待和唤醒的方法

  • 方式1:使用Object中的wait()方法让线程等待,使用object中的notify()方法唤醒线程
  • 方式2:使用JUC包中Condition的await()方法让线程等待,使用signal()方法唤醒线程
  • 方式3:LockSupport类可以阻塞当前线程以及唤醒指定被阻塞的线程

waitNotify限制

Object类中的wait和notify方法实现线程等待和唤醒

结论:wait和notify方法必须要在同步块或者方法里面且成对出现使用,否则会抛出java.lang.IllegalMonitorStateException。
调用顺序要先wait后notify才OK。

awaitSignal限制

static Lock lock = new ReentrantLock(); static Condition condition = lock.newCondition(); condition.await(); condition.signal(); 

await和signal方法必须要在同步块或者方法里面且成对出现使用,否则会抛出java.lang.IllegalMonitorStateException。

调用顺序要先await后signal才OK。

LockSupport重点说明

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

LockSuport是一个线程阻塞工具类,所有的方法都是静态方法,可以让线程在任意位置阻塞,阻寨之后也有对应的唤醒方法。归根结底,LockSupport调用的Unsafe中的native代码。

LockSupport提供park()和unpark()方法实现阻塞线程和解除线程阻塞的过程

LockSupport和每个使用它的线程都有一个许可(permit)关联。permit相当于1,0的开关,默认是0,

调用一次unpark就加1变成1,

调用一次park会消费permit,也就是将1变成0,同时park立即返回。

如再次调用park会变成阻塞(因为permit为零了会阻塞在这里,一直到permit变为1),这时调用unpark会把permit置为1。每个线程都有一个相关的permit, permit最多只有一个,重复调用unpark也不会积累凭证

相关内容

热门资讯

科技实测!金花房卡怎么购买金牛... 今 日消息,金牛座厅/新西部房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更...
一分钟推荐“拼三张金花房卡找谁... 新九天是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:86909166许多玩家在游戏中会购买房卡来享...
玩家攻略,金花房卡批发海星大厅... 微信游戏中心:海星大厅房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
重大通报,如何购买金花房卡荣耀... 荣耀联盟是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:332900...
重大通报,金花房卡是正规的皇豪... 重大通报,金花房卡是正规的皇豪互众/新道游/房卡批发市场价格表Sa9Ix苹果iPhone 17手机即...
我来教你/牛牛房卡怎么获得新鸿... 您好!微信新鸿狐大厅/随意玩大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(新鸿狐大厅...
ia攻略/怎么买斗牛房卡新天王... 今 日消息,新天王/皇豪互众房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更...
IA解析/牛牛房卡哪里有卖的龙... 龙马大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...
房卡必备教程“微信链接金花房卡... 新神盾是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡来...
正版授权!金花房卡怎么购买南瓜... 微信游戏中心:南瓜大厅/新道游房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或...
我来教你/如何购买金花房卡火狐... 火狐大厅/新超圣是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:【3329006910】或QQ:33...
正规平台有哪些,金花房卡怎么购... 正规平台有哪些,金花房卡怎么购买枫叶大厅/房卡批发市场价格表Sa9Ix苹果iPhone 17手机即将...
ia攻略/金花房卡出售芝麻大厅... 您好!微信芝麻大厅大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(芝麻大厅)大厅介绍:...
玩家攻略,金花房卡批发价天启联... 今 日消息,天启联盟房卡添加微信33549083 苹果今日发布了 iOS 16.1 正式版更新,简单...
正版授权!金花微信链接市场价格... 新天王/皇豪互众房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 ...
科技实测!牛牛房卡制作链接趣游... 科技实测!牛牛房卡制作链接趣游联盟/微信链接房卡从哪里购得趣游联盟是一款非常受欢迎的游戏,咨询房/卡...
我来教你/金花房卡专卖店神牛大... 微信游戏中心:神牛大厅房卡在哪里买打开微信,添加客服微信【88355042】,进入游戏中心或相关小程...
我来教你/牛牛房卡制作链接天龙... 我来教你/牛牛房卡制作链接天龙大厅/微信链接房卡购买渠道Sa9Ix苹果iPhone 17手机即将进入...
玩家攻略,金花微信链接市场价格... 您好!微信钻石大厅大厅链接获取房卡可以通过以下几种方式购买: 1.微信渠道:(钻石大厅)大厅介绍:...
ia实测“金花房卡购买渠道/金... 金牛座牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡...