ReentrantLock和synchronized锁
这两个锁都是独占锁,所谓独占,就是我在用,你不准用,当锁定时,其他线程必须等待运行的线程结束才能分得资源。
那么,两个独占锁又有什么不同呢,简单记录一下
1.synchronized锁是自动锁,怎么锁和怎么解锁我们不用管,操作简单,只需要在方法前修饰就好,例如:
public synchronized void method(String name){}
#那我需要手动锁和解锁呢
2.ReentrantLock(重入锁)
for (int i = 1; i <= 3; i++) {
lock.lock();
}
for(int i=1;i<=3;i++){
try {
} finally {
lock.unlock();
}
}
锁的次数和解锁次数要一致,否则导致无法正确释放锁,其他线程无法获得锁。
并且,在try-finally块中释放锁。