第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

深入java并發(fā)包源碼(一)簡(jiǎn)介

標(biāo)簽:
Java

https://img1.sycdn.imooc.com//5beed5d90001214f04760493.jpg

阅读本文章前需要了解 CAS 操作是什么。

首先大致介绍一下需要讲到的几个类,只需要理解这几个类是什么关系即可,后面会有详细解析。

Unsafe :这个类提供了 native 方法,未开源,提供了线程阻塞和唤醒,原子操作等方法。

LockSupport :包装了一层 Unsafe 类,非常类似于代理者模式,将在 Unsafe 类中的线程挂起唤醒等操作导出,避免将 UNSAFE 类引入代码造成复杂性上升,并且降低了耦合。

首先我们看一下以 ReentrantLock 为代表的并发工具与 JUC 底层类的关系。

AQS 类:用 Unsafe 类的 CAS 操作和 LockSupport 来实现锁的等待,具体实现在后面会分析。

ReentrantLock:实现了 Lock 接口,持有自定义的 AQS 内部类,通过 AQS 内部类实现锁的操作,然后将 AQS 映射到 Lock 接口上。

接下来仔细介绍一下这些类的实现

Unsafe

Unsafe 类有相当多的功能,比如内存管理,线程同步,对类和数组进行一些骚操作 。想要获取这个类需要用到利用 Java 反射。本篇文章只介绍一些关于并发的操作。

如果有兴趣可以去看一下这篇博客

说一说Java的Unsafe类

方法名功能
park()阻塞线程,可以通过参数控制挂起时间和是否可以被中断
unpark()唤醒线程
compareAndSwapObjectCAS 操作 Object
compareAndSwapIntCAS 操作 int

LockSupport

LockSupport 只是对 Unsafe 类进行封装了而已,下面的方法都是直接调用 UNSAFE 类中的方法。

方法名功能
park()阻塞线程
parkNanos(long nanos)阻塞线程,在 nanos 毫秒后唤醒
parkUntil(long deadline)阻塞线程,直到 deadline 时间
unpark(Thread thread)唤醒处于阻塞状态的线程

使用 synchronized 在 dump 线程的时候会带有当前线程正在等待对象的信息,然而使用这些方法得不到这些信息,开发人员疏漏了这点。所以在 LockSupport 在 Java 6 中添加了这几个方法。

方法名功能
park()阻塞线程,
parkNanos(Object blocker, long nanos)阻塞线程,在 nanos 毫秒后唤醒
parkUntil(Object blocker,long deadline)阻塞线程,直到 deadline 时间
unpark(Object blocker,Thread thread)唤醒处于阻塞状态的线程

blocker 就是当前线程正在等待的对象,使用下面表格的方法就可以把在 dump 线程的时候把等待的对象导出了。

原文出处:https://www.cnblogs.com/stonymoon/p/9972069.html

 

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消