写一个死锁
Posted Saber本
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写一个死锁相关的知识,希望对你有一定的参考价值。
死锁产生的原因:
一个线程进入锁一需要锁二,
另一个线程进入锁二需要锁一,
由于锁一锁二都被占了,所以线程执行不下去。
所以只需写一个相互交叉的锁一锁二就可以产生死锁。
class sisuogoucheng implements Runnable
{
private boolean panduan=true;
sisuogoucheng(boolean panduan)
{
this.panduan=panduan; //写一个判断条件使线程进入不同的锁。
}
public void run()
{
if(panduan)
{
synchronized(mykey.obj1)
{
System.out.println("t1----obj1");
synchronized(mykey.obj2)
{
System.out.println("t1------obj2");
}
}
}
else
{
synchronized(mykey.obj2)
{
System.out.println("t2-------obj2");
synchronized(mykey.obj1)
{
System.out.println("t2---------obj1");
}
}
}
}
}
class mykey
{
static Object obj1=new Object(); //创建两个不同的锁
static Object obj2=new Object();
}
public class sisuo
{
public static void main(String[] args)
{
Thread t1=new Thread(new sisuogoucheng(true));
Thread t2=new Thread(new sisuogoucheng(false));
t1.start();
t2.start();
}
}
以上是关于写一个死锁的主要内容,如果未能解决你的问题,请参考以下文章