ReentrantLock与Sync有什么区别
阻塞和唤醒的方式不一样
sync是java的关键字
-
底层通过monitor对象
-
不需要用户释放锁,自动释放
-
sync不可中断,除非抛异常或运行完成
-
默认加锁都是非公平锁
lock是api层面的类
- 需要用户主动释放锁
- 可中断,设置超时中断
- 默认也是非公平锁,可以设置成公平锁
- 锁绑定多个condition,用来精确唤醒,而sync没有,要么随机唤醒一个,或者全部
阻塞和唤醒的方式不一样
sync是java的关键字
底层通过monitor对象
不需要用户释放锁,自动释放
sync不可中断,除非抛异常或运行完成
默认加锁都是非公平锁
lock是api层面的类