已解决
synchronized 、ReentrantLock
来自网友在路上 144844提问 提问时间:2023-10-26 05:46:18阅读次数: 44
最佳答案 问答题库448位专家为你答疑解惑
synchronized
和 ReentrantLock
都是用于实现多线程同步的机制:
-
锁的获取方式:
synchronized
是内置的 Java 关键字,它通过对象的内置监视器来获取锁。每个对象都有一个关联的监视器,只有一个线程可以获得对象的监视器,其他线程必须等待。ReentrantLock
是一个类,它提供了显式的锁,通过创建ReentrantLock
实例并调用其lock()
方法来获取锁。
-
可中断性:
ReentrantLock
支持可中断的锁获取,即线程可以在等待锁的过程中响应中断。synchronized
不支持可中断性,一旦线程等待锁,只能等待锁被释放或线程被中断。
-
公平性:
ReentrantLock
可以选择是否使用公平锁。公平锁会按照请求锁的顺序分配锁,确保所有线程都有机会获得锁。非公平锁则不考虑等待线程的顺序。synchronized
是非公平锁,不考虑等待线程的顺序。
-
灵活性:
ReentrantLock
提供了更多的灵活性,如超时获取锁、尝试获取锁、条件等待等功能。这使得它在某些复杂的同步需求下更有优势。synchronized
提供的功能相对较少。 </
查看全文
99%的人还看了
相似问题
猜你感兴趣
版权申明
本文"synchronized 、ReentrantLock":http://eshow365.cn/6-24838-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!