Synchronized可重入性解釋:
自己可以再次獲取自己的內部鎖。
Public class Service{
Synchronized public void service1(){
System.out.println(“service1”);
Service2();
}
Synchronized public void service2(){
System.out.println(“service2”);
Serice3();
}
Synchronized public void service3(){
System.out.println(“service3”);
}
}
通過調用Service.service1()方法可以直接輸出
Service1
Service2
Service3
另外可重入鎖也可以在繼承父類的子類中使用
Main:
public class Main {
public int i=10;
synchronized public void operateMainMethod() {
try {
i--;
System.out.println("main print i="+i);
Thread.sleep(100);
} catch (Exception e) {
// TODO: handle exception
}
}
}
Sub:
public class Sub extends Main {
synchronized public void operateISubMethod() {
try {
while(i>0) {
i--;
System.out.println("sub print i="+i);
Thread.sleep(100);
this.operateMainMethod();
}
} catch (Exception e) {
// TODO: handle exception
}
}
}
MyThread:
public class MyThread extends Thread{
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
Sub sub=new Sub();
sub.operateISubMethod();
}
}
Run:
public class Run {
public static void main(String[] args) {
MyThread thread=new MyThread();
thread.start();
}
}