想測驗synchronized物件鎖在“可重入鎖”的概念,運行出錯,求解答

public class SynchronizedTest {
public static void main(String[] args) {
MyThreadSub mt = new MyThreadSub();
Thread t1 = new Thread(mt);
t1.start();
new Thread(new MyThreadMain()).start();
}
}
class MyThreadSub extends Thread{
@Override
public void run() {
Sub sub = new Sub();
sub.operateISubMethod();
}
}
class MyThreadMain extends Thread{
@Override
public void run() {
Main main = new Main();
main.operateIMainMethod();
}
}
class Main
{
private int i = 10;
public synchronized void operateIMainMethod()
{
for (int i1 = 0; i1 < 5; i1++) {
System.out.println("main print i=" + i1);
}
}
}
class Sub extends Main
{
private int j = 10;
public synchronized void operateISubMethod()
{
for (int i = 0; i < 3; i++) {
System.out.println("Sub print j=" + i);
System.out.println("=============================");
this.operateISubMethod();
}
}
}
uj5u.com熱心網友回復:
把 this.operateISubMethod();改成 this.operateIMainMethod();
否則,operateISubMethod無限遞回自己造成堆疊溢位
uj5u.com熱心網友回復:
sub.operateISubMethod();死回圈了轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/251155.html
標籤:Java EE
