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 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/kfh5000/article/details/127324823