Java入门 -- 死锁

* 死锁

* 出现原因:

* 1. 存在多个线程;

* 2. 存在两个或是两个以上的共享资源;

*

*  死锁的解决方案: 没有解决办法,只能尽量避免发生(从设计上避免出现死锁的产生条件);

*/

class DeadLock extends Thread

{

public DeadLock(String name)

{

super(name);

}

@Override

public void run() {

// TODO Auto-generated method stub

super.run();

if("张三儿".equals(Thread.currentThread().getName())){

synchronized("遥控器"){

System.out.println("张三拿到了遥控器,准备拿电池");

synchronized("电池"){

System.out.println("张三拿到了电池,接着按了遥控器打开了空调");

}

}

}

else if("李四儿".equals(Thread.currentThread().getName())){

synchronized("电池"){

System.out.println("李四儿拿到了电池,准备去拿药遥控器");

synchronized("遥控器"){

System.out.println("李四拿到了遥控器,接着装上电池,打开了空调");

}

}

}

}

}

public class Demo4 {

public static void main(String[] args) {

DeadLock zhangsan = new DeadLock("张三儿");

DeadLock lisi = new DeadLock("李四儿");

zhangsan.start();

lisi.start();

}

}

运行结果:


说明:死锁不一定发生,但是有发生的条件存在就有发生的可能性;

你可能感兴趣的:(Java入门 -- 死锁)