ReenTrantLock和Synchronized

相同点:

都是可重入锁,都是同一个线程没进入一次,锁的计数器自增1,等到锁的计数器为0时释放锁。

不同点:

1、Synchronized依赖jvm实现,实现方式比较难见到,ReetTrantLock依赖JDK实现,有源码可看。

2、Synchronized使用简单便捷,加锁,解锁由编译器实现;ReenTrantLock需要手动声明、加锁、解锁,功能更细粒度和灵活。

3、ReenTrantLock可以指定是公平锁还是非公平锁,Synchronized只能是非公平锁。

4、ReenTrantLock提供了一个条件类,可以分组唤醒需要唤醒的线程,Synchronized只能随机唤醒或者唤醒全部。

5、ReenTrantLock提供了可中断等待锁的线程的机制,通过lock.lockInterruptibly()来实现这个机制。

文章整理自:https://blog.csdn.net/z69183787/article/details/79344382

猜你喜欢

转载自blog.csdn.net/haoshaoxing/article/details/82427576