JAVA的synchronized写法

Posted sunshine106

tags:

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

使用关键字synchronized的写法比较多,常用的有如下几种,代码如下:

public class MyService
{
     synchronized public static void testMethod1()
     {
     }
     public void testMethod2()
    {
         synchronized(MyService.class)
         {
         }
     }
  
     synchronized public void testMethod3()
    {
     }
  
     public void testMethod4()
    {
         synchronized(this)
     {
     }
     }  
 
     public void testMethod5()
     {
        synchronized("abc") {}
     }
 
}

 

上面的代码中出现了3中类型的锁对象:

(A) testMethod1() 和testMethod2()持有的锁是同一个, 即MyService.java对应Class类的对象。

(B) testMethod3()和testMethod4()持有的锁是同一个,即MyService.java类的对象。

 (C) testMethod5()持有的锁是字符串abc。

说明 testMethod1() 和testMethod2()是同步关系,testMethod3()和testMethod4()是同步关系,A和C之间是异步关系,B和C之间是异步关系,A和B之间是异步关系。

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

java中synchronized的三种写法详解

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

Java synchronized关键字学习二

Java中枚举的写法和用法

JAVA线程安全之synchronized关键字的正确用法

多线程 Thread 线程同步 synchronized