jdk 源码分析(8)java synchronized和锁lock对比

来源:互联网 发布:光学透镜设计软件 编辑:程序博客网 时间:2024/05/23 17:49
因为synchronized 是关键字,无法看到源代码,所以只能做一个简单的分析对比了,

synchronized 能锁方法,也能锁代码块,其实也是一种重入锁(也就是自己的锁,自己可以进去),代码块或方法离开,自动释放锁。

lock:lock能做synchronized能做的所有的事情,但是lock 能过在资源竞争地方,通过投票等方法让其他锁释放。而synchronized必须自愿,lock 需要自己释放出来,所以一般将lock.lock 放在try里面,而lock.unlock 放在finally 里面。


synchronized 配套的wait和notify ,与lock的condition 里的await和 signal 相对应,lock可以获取多个condition。

据网上资料建议:
synchronized在处理竞争压力不强的地方性能远好于lock ,而lock相反。具体什么地方使用synchronized 和lock酌情考虑。

原创粉丝点击