发布2020年度程序员收入报告
11.2 AQS底层 上题我们用到了ReentrantLock、Condition ,但是它们的底层是如何实现的呢?其实他们是基于AQS的 同步队列 跟 等待队列 实现的! 11.2.1 AQS 同步队列 学AQS 前 CAS + 自旋 + LockSupport + 模板模式 必须会,目的是方便理解源码,感觉比 Synchronized 简单,因为是单纯的 Java 代码。个人理解AQS具有如下几个特点:
ReentrantLock底层: 各个线程对global_num的修改不会影响到其它线程,因为是线程私有资源,因此func函数是线程安全的。说完了局部变量、全局变量、函数参数,那么接下来就到函数返回值了。 函数返回值 这里也有两种情况,一种是函数返回的是值;另一种返回对变量的引用。 1,返回的是值
我们来看这样一段代码: 当一个线程执行test1()方法的时候,需要获取rentrantLockDemo的对象锁,在test1方法汇总又会调用test方法,但是test()的调用是需要获取对象锁的。 可重入锁也叫「递归锁」,指的是同一线程外层函数获得锁之后,内层递归函数仍然有获取该锁的代码,但不受影响。 ThreadLocal设计原理 ThreadLocal名字中有个Thread表示线程,Local表示本地,我们就理解为线程本地变量了。
先看看ThreadLocal的整体: (编辑:惠州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |