synchronized锁重入
渔灯暗,客梦回,一声声滴人心碎
“可重入锁”的意思是,自己可以再次获取自己的内部锁,如果线程A获得了某个对象的锁,这个锁还没有被释放,当想再次获得锁的时候还是可以获得的.也就是说,在一个同步代码方法/块里还是可以获取本类的其他同步方法/块.
示例代码:
public class ThreadTest {
public static void main(String[] args) {
try{
MyThread thread = new MyThread();
thread.start();
}catch (Exception e) {
e.printStackTrace();
}
}
}
class MyThread extends Thread{
@Override
public void run() {
super.run();
A a = new A();
a.method1();
}
}
class A {
synchronized public void method1() {
System.out.println("method1");
method2();
}
synchronized public void method2() {
System.out.println("method2");
method3();
}
synchronized public void method3() {
System.out.println("method3");
}
}
这里的方法1,2,3都是同步,在1里面调用方法2,方法2里调用方法3.输出结果:
由此可以得出:
在同一个类中,同步的方法是可以调用其他同步方法的.而且父子类中这样也可以,即父子类中也存在可重入锁;
还没有评论,来说两句吧...