美文网首页
synchronize关键字

synchronize关键字

作者: Penva | 来源:发表于2021-07-14 17:44 被阅读0次

synchronized 关键字底层做了哪些优化

JDK1.6后synchronize引入了,偏向锁,轻量锁,自旋锁,锁消除,锁粗化等技术为了减少锁的操作开销

锁有四种状态,他们会随着竞争越激烈而升级,锁只能升级不会降级,提高对获得锁和释放锁的效果

1:无锁状态

2:偏向锁状态

3:自旋锁状态

4:重量级锁状态


synchronized和ReentrantLock区别是什么?

synchronize和ReentrantLock都是可重入锁,就是只要对象没有释放锁还是可以获取对象的

synchronize是JVM层面的,ReentrantLock是JDK层面的

synchronize和ReentrantLock控制等待和唤醒也是不同的,synchronize需要调用wait方法进入等待状态,需要其他线程调用notify和notifyall方法才能唤醒,ReentrantLock进入等待状态要调用await方法,唤醒要调用signal和signalAll方法

synchronize在竞争资源时会一直等待,ReentrantLock可以尝试获取锁,并得到获取结果

synchronize加锁代码在执行完任务或则出现异常后会释放锁,ReentrantLock不会释放锁,需要在finally代码块显示释放

synchronize是无法实现公平锁的,ReentrantLock可以满足公平锁的

相关文章

网友评论

      本文标题:synchronize关键字

      本文链接:https://www.haomeiwen.com/subject/rdoypltx.html