1.概念
可重入锁(递归锁)指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取到该锁的代码,在同一线程在外层方法获取锁的时候,在进入内层方法会自动获取锁。
也就是说:线程可以进入任何一个它已经拥有的锁所同步的代码块。
ReentrantLock / Synchronized 就是一个典型的可重入锁
我自己理解的是:这里是同一个对象的方法,锁的是对象,拿到同一个对象锁后,自然可以访问2个方法,而不需要再次获取
2.synchronized代码例子
public synchronized void method1() {
method2();
}
public synchronized void method2() {
}
3.ReentrantLock 代码例子:
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* 资源类
*/
class Phone implements Runnable{
Lock lock = new ReentrantLock();
/**
* set进去的时候,就加锁,调用set方法的时候,能否访问另外一个加锁的set方法
*/
public void getLock() {
lock.lock();
try {
System.out.println(Thread.currentThread().getName() +
版权声明:本文为kfh5000原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。