- synchronize 可重入锁
public class ReentrantDemo {
synchronized void m1(){
System.out.println("m1 start...");
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
m2();
System.out.println("m1 end...");
}
synchronized void m2(){
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("m2");
}
public static void main(String[] args) {
new ReentrantDemo().m1();
}
}
运行结果
m1 start…
m2
m1 end…
- 子类重写父类synchronized方法锁对象问题
我们可以通过分别打印父类、子类中this对象,发现父类、子类中是同一个对象,代码验证如下
1、Child.java
public class Child extends Father {
@Override
public synchronized void m1() {
System.out.println(&