Kaypler

站在大漠之巅,孤独凝望,远去的海市蜃楼,何时重现当年断壁残垣上的幻灭诗歌。

多线程死锁示例

/*死锁的常见现象:同步嵌套*/

class Test implements Runnable

{

private boolean flag;

Test(boolean flag){

this.flag = flag;

}

public void run(){

if(flag){

while(true)

synchronized(MyLock.locka){

System.out.println(Thread.currentThread().getName()+"..if   locka....");

synchronized(MyLock.lockb) {

System.out.println(Thread.currentThread().getName()+"..if   lockb....");

}

}

}

else{

while(true)

synchronized(MyLock.lockb)

{

System.out.println(Thread.currentThread().getName()+"..else  lockb....");

synchronized(MyLock.locka)

{

System.out.println(Thread.currentThread().getName()+"..else   locka....");

}

}

}

}

}

//定义两把不同的对象锁

class MyLock

{

public static final Object locka = new Object();

public static final Object lockb = new Object();

}

class DeadLockTest 

{

public static void main(String[] args) 

{

Test a = new Test(true);

Test b = new Test(false);


Thread t1 = new Thread(a);

Thread t2 = new Thread(b);

t1.start();

t2.start();

}

}

评论

© Kaypler | Powered by LOFTER