关于java:javasynchronizeReentrantLock

78次阅读

共计 394 个字符,预计需要花费 1 分钟才能阅读完成。

  1. 背景: 并发同步两巨头. 后者有兄弟 ReentrantReadWriteLock/StampedLock, 前者独生子
  2. 区别: 机制区别:synchronize 是 jvm 解决细节逻辑, 可重入, 操作的是对象头里的 mark word,mark word 里有锁类型 (无锁 / 轻量级锁 / 偏差锁 / 分量极锁) 和持有锁的线程.jvm 优化后, 就有了缩分类和锁降级. 不偏心锁.jvm 保护阻塞线程列表.ReentrantLock: 对一个 int 进行 cas 操作来获取 / 开释锁
  3. 区别: 细节区别: 前者毋庸手动开释, 代码快完结 jvm 开释. 后者要手动开释锁, 个别的代码构造是现 lock, 再 try-cache-finally, 在 finnally 里 unlock. 后者有更多的操作, 比方 tryLock, 不论有无获取胜利, 都返回, 还能够查问期待队列的列表, 条件锁等. 后者能够设置是否偏心锁, 前者肯定是 非颁布平锁. 后者反对打断和超时操作, 前者不反对.
正文完
 0