用synchronized同时修饰父类和子类,线程是安全的。即对象锁可重入

public class SyncDubbo {
static class Main {
public int i = 10;

public synchronized void operationSup() {
try {
i–;
System.out.println(“Mind print i = ” + i);
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

static class Sub extends Main {
public synchronized void operationSub() {
try {
while (i > 1) {
i–;
System.out.println(“sub print i = ” + i);
Thread.sleep(100);
this.operationSup();
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

public static void main(String[] args) {
Thread t1 = new Thread(new Runnable() {
public void run() {
Sub sub = new Sub();
sub.operationSub();
}
});

t1.start();
}
}

 

运行结果:

sub print i = 9
Mind print i = 8
sub print i = 7
Mind print i = 6
sub print i = 5
Mind print i = 4
sub print i = 3
Mind print i = 2
sub print i = 1
Mind print i = 0

    原文作者:java锁
    原文地址: https://www.cnblogs.com/java-xz/p/7070741.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞