synchronized与lock什么区别
通过五个维度
1.构造:构造方式不同(sync是jvm层面的,lock是接口,api层的锁)
2.使用方法:不需要手动释放,lock需要手动释放
3.中断:sync不可中断,lock可中断(trylock(timeout,unit) 和 lockInterruptibly()放代码块中,调用interrupt()中断)
4.加锁是否公平:sync 非公平,lock 都可以,默认是非公平锁
5.锁可以绑定多个条件,sync不支持,lock可以绑定多个唤醒(condition)条件,精准唤醒某一类线程
评论
发表评论
|
|