synchronized使用

Posted soft.push("zzq")

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了synchronized使用相关的知识,希望对你有一定的参考价值。

在一个方法内部使用如下代码:

public void m5() {
        synchronized (Test1.class) {
            System.out.println("m5");
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

等同于如下代码:

public synchronized static void m5() {
            System.out.println("m5");
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    }

以上两种情况是全局所有实例对象共用一个同步锁;

而如下两组代码则是每个实例对象使用单独的同步锁,如下:

 public void m6() {
        synchronized (this) {
            System.out.println("m5");
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

 public synchronized  void m6() {
            System.out.println("m5");
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        
    }

 

以上是关于synchronized使用的主要内容,如果未能解决你的问题,请参考以下文章

同步代码 [重复]

#yyds干货盘点# Java | 关于synchronized相关理解

并发技术12线程锁技术的使用

Java并发编程实战—–synchronized

Java初识方法

多线程:synchronized代码块synchronized方法静态synchronized方法使用的锁