当前位置: 首页 > 教程 > Java多线程 >

Java 可重入锁

精华
小牛编辑
135浏览
2023-03-14

1 什么是Java可重入锁

根据Sun公司的说法,Java锁是可重入的,这意味着,如果从方法中调用方法,则Java线程可以将同一把锁用于不同的同步方法。

2 Java可重入锁的优势

它避免了单线程死锁。

3 Java可重入锁的例子

让我们通过以下示例了解Java可重入锁:

package cn.xnip;

/**
 * 小牛知识库网: https://www.xnip.cn
 */
/**
 * Java可重入锁的例子
 */
class Reentrant {
    public synchronized void m() {
        n();
        System.out.println("this is m() method");
    }
    public synchronized void n() {
        System.out.println("this is n() method");
    }
}

在此类中,m和n是同步方法。m() 方法在内部调用n() 方法。

现在让我们在线程上调用m() 方法。在下面给出的类中,我们使用匿名类创建线程。

package cn.xnip;

/**
 * 小牛知识库网: https://www.xnip.cn
 */
/**
 * Java可重入锁的例子
 */
public class Demo{

    public static void main(String args[]){
        final Reentrant re=new Reentrant();

        Thread t1=new Thread(){
            public void run(){
                re.m();//calling method of Reentrant class
            }
        };
        t1.start();
    }}

输出结果为:

this is n() method
this is m() method