一个同步方法可以调用另一个同步方法,一个线程已经拥有了某个对象的锁,再次申请 的时候依然会得到这个对象的锁。synchronized的锁就是可重入锁,存在一种情况,子类调用父类的同步方法。
import java.util.concurrent.TimeUnit;
public class T {
synchronized void m() {
System.out.println("m start");
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("m end");
}
public static void main(String[] args) {
new TT().m();
}
}
class TT extends T {
@Override
synchronized void m() {
System.out.println("child m start");
super.m();
System.out.println("child m end");
}
}
运行结果如下
child m start
m start
m end
child m end
网友评论