ReentrantLock和synchronized都可以用于线程同步,它们有什么区别?

加载中...

vs

加载中...
ReentrantLocksynchronizedthreadlock
2
238
小课
小课2022-05-28 16:06
1 个回答

使用ReentrantLock获取锁和释放锁可以不在同一个地方,而synchronized无论是方法还是代码块都只能是在一个方法中获一个代码块中,比如

加载中...

ReentrantLock提供的接口更加丰富,它支持tryLock()tryLock(long, TimeUnit)来尝试获取锁,以及lockInterruptibly()可中断获取锁,还可以指定获取锁的策略,公平锁或非公平锁。ReentrantLock可以获取当前锁的信息,比如当前占有锁的线程以及等待锁的线程队列等。这些都是使用synchronized无法实现的。ReentrantLock的用法可以参考ReentrantLock使用介绍

但是synchronized的优势也很明显,就是使用非常简单,只需要一个关键字修饰即可实现一个线程安全的方法或者代码块。

2
已修改
小课
小课2022-05-28 16:27
你的回答

内容