并发编程读书笔记20190425

1. Synchronized->wait,notify

对应

Lock->Condition.await|signal->LockSupport.park|unpark->Unsafe.park|unpark

2. AbstractQueuedSynchronizer维护了一个FIFO同步队列,Condition维护了一个FIFO等待队列。

await则将同步队列中的Node对象新建一个加入等待队列队尾,释放锁Lock。被唤醒后再去竞争锁Lock,如果拿到锁,则继续执行线程

signal则将等待队列中的Node对象新建一个加入同步队列队尾,然后LockSupport.unpark唤醒Node对象

3. 公平锁(FairSync)和非公平锁(NonfairSync)区别是非公平锁会直接去竞争锁2次,竞争失败才加入同步队列,FIFO去竞争锁,可以有效减少线程切换;而公平锁每次都需要FIFO去竞争锁,会增加线程上下文切换,影响性能

你可能感兴趣的:(并发编程读书笔记20190425)