文章目录
1、基本介绍
synchronized
关键字用于实现多线程之间的同步操作。
synchronized
可用于修饰 类方法, 对象方法, 代码块
使用 syncronized
时,需要有监视器。当修饰 类方法时, 监视器为该类; 当修饰 对象方法, 监视器为该对象; 当修饰 代码块, 需要手动传入监视器
1.1、类方法
示例代码
public class SynchronizedTest {
public synchronized static void classMethod() {
}
public static void commonClassMethod() {
}
}
反编译
public static synchronized void classMethod();
descriptor: ()V
flags: ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=0, locals=0, args_size=0
0: return
LineNumberTable:
line 12: 0
public static void commonClassMethod();
descriptor: ()V
flags: ACC_PUBLIC, ACC_STATIC
Code:
stack=0, locals=0, args_size=0
0: return
LineNumberTable:
line 15: 0
从反编译角度来看,加了 synchronized
关键字的,flags
多了 ACC_SYNCHRONIZED
。
1.2、对象方法
示例代码