java并发
文章平均质量分 84
旷野雄狮
不要叶公好龙
展开
-
AQS如何实现ReentrantLock
1.AQS如何实现ReentrantLock的lock()和unlock()一个AQS维护一个“同步队列”;AQS实现了一个“锁状态”:private volatile int state; 采用CAS控制并发的“锁状态”修改,哪个线程设置1成功就获取了锁;否者就生成一个node加入AQS的“同步队列”中。然后就调用Unsafe.park()阻塞此线程。等待另一个线程unlock后,就被唤醒,然后将此node从AQS的“同步队列”中移除。然后执行业务代码。 ...原创 2021-02-26 17:10:40 · 135 阅读 · 0 评论 -
java加锁的意义
java加锁:synchronized、1. 互斥:2. 内存可见:加锁的含义不仅仅局限于互斥行为,还包括内存可见性。为了确保所有线程都能看到共享变量的最新值,所有执行读操作或者写操作的线程都必须在同一个锁上同步。详见:《java并发编程实战》3.1.3原创 2017-07-27 15:15:12 · 3638 阅读 · 0 评论