您的位置:首页 > 其它

多线程(死锁)

2015-10-23 22:46 225 查看
线程死锁的原因:

同步中嵌套同步,但是锁却不同

死锁演示(DeadLockDemo):

class Test implements Runnable
{
private boolean flag;
//构造函数中传入标记的值,用来操作run方法中的if else循环
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
{
static Object lockA = new Object();
static Object lockB = new Object();
}

class  DeadLockTest
{
public static void main(String[] args)
{
//传入true使其在if循环中
Thread t1 = new Thread(new Test(true));
//传入false使其在if循环中
Thread t2 = new Thread(new Test(false));
t1.start();
t2.start();
}
}


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