synchronized 、ReentrantLock-CSDN博客
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
synchronized
和 ReentrantLock
都是用于实现多线程同步的机制:
-
锁的获取方式:
synchronized
是内置的 Java 关键字,它通过对象的内置监视器来获取锁。每个对象都有一个关联的监视器,只有一个线程可以获得对象的监视器,其他线程必须等待。ReentrantLock
是一个类,它提供了显式的锁,通过创建ReentrantLock
实例并调用其lock()
方法来获取锁。
-
可中断性:
ReentrantLock
支持可中断的锁获取,即线程可以在等待锁的过程中响应中断。synchronized
不支持可中断性,一旦线程等待锁,只能等待锁被释放或线程被中断。
-
公平性:
ReentrantLock
可以选择是否使用公平锁。公平锁会按照请求锁的顺序分配锁,确保所有线程都有机会获得锁。非公平锁则不考虑等待线程的顺序。synchronized
是非公平锁,不考虑等待线程的顺序。
-
灵活性:
ReentrantLock
提供了更多的灵活性,如超时获取锁、尝试获取锁、条件等待等功能。这使得它在某些复杂的同步需求下更有优势。synchronized
提供的功能相对较少。 </
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |