您的位置:首页 > 其它

线程死锁测试_加锁次序导致死锁

2015-04-02 21:31 218 查看

package test.thread;

public class DeadLockTest extends Thread{

private Object o;

public void setO(Object o){

this.o=o;

}

public void run(){

synchronized(this){

System.out.println("DeadLockTest begin");

synchronized(o){

System.out.println("DeadLockTest_o");

}

System.out.println("DeadLockTest end");

}

}

public static void main(String[] args) {

DeadLockTest dlt=new DeadLockTest();

TT tt=new TT(dlt);

dlt.setO(tt);

dlt.start();

tt.start();

}

}

class TT extends Thread{

private Object o;

public TT(Object o){

this.o=o;

}

public void run(){

synchronized(this){

System.out.println("TT begin");

synchronized(o){

System.out.println("TT_o");

}

System.out.println("TT end");

}

}

}

运行结果:多运行几次就会出现死锁现象

非死锁输出结果可能是:

DeadLockTest begin

DeadLockTest_o

DeadLockTest end

TT begin

TT_o

TT end

死锁结果:

eclise控制台:



eclipse debug窗口:



java VisualVm线程窗口:



java VisualVM线程Dump:




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: