public class Number {
public static synchronized void a(){
Sleeper.sleep(1);
System.out.println(1);
}
public synchronized void b(){
System.out.println(2);
}
public static void main(String[] args) {
Number n1 = new Number();
new Thread(() -> n1.a()).start();
new Thread(() -> n1.b()).start();
}
}
代码如上
1. 当在静态方法上a() 加synchronized之后锁就是 类对象Number,
2. 当在普通方法上b() 加synchronized之后锁就是 Number n1 = new Number() 的n1