/**
*@author:StormMaybin
*@Date:2016-05-15
*@<description>死锁</description>
*/
/*
* 死锁简单示例
* 死锁的原因是由于 两个或者多个线程互相等待 对方已被锁定的资源
*/
//实现Runnable接口
class Test implements Runnable
{
private boolean flag;
Test(boolean flag)
{
this.flag = flag;
}
public void run ()
{
if (flag)
{
//同步代码块
synchronized (Mylock.locka)
{
System.out.println ("if locka");
synchronized (Mylock.lockb)
{
System.out.println ("if lockb");
}
}
}
else
{
synchronized (Mylock.lockb)
{
System.out.println ("else lockb");
synchronized (Mylock.locka)
{
System.out.println ("else locka");
}
}
}
}
}
class Mylock
{
//这加static无非是为了调用方便
static Object locka = new Object ();
static Object lockb = new Object ();
}
class DeadLockTest
{
public static void main(String[] args)
{
Thread t1 = new Thread(new Test (true));
Thread t2 = new Thread(new Test (false));
t1.start();
t2.start();
}
}
*@author:StormMaybin
*@Date:2016-05-15
*@<description>死锁</description>
*/
/*
* 死锁简单示例
* 死锁的原因是由于 两个或者多个线程互相等待 对方已被锁定的资源
*/
//实现Runnable接口
class Test implements Runnable
{
private boolean flag;
Test(boolean flag)
{
this.flag = flag;
}
public void run ()
{
if (flag)
{
//同步代码块
synchronized (Mylock.locka)
{
System.out.println ("if locka");
synchronized (Mylock.lockb)
{
System.out.println ("if lockb");
}
}
}
else
{
synchronized (Mylock.lockb)
{
System.out.println ("else lockb");
synchronized (Mylock.locka)
{
System.out.println ("else locka");
}
}
}
}
}
class Mylock
{
//这加static无非是为了调用方便
static Object locka = new Object ();
static Object lockb = new Object ();
}
class DeadLockTest
{
public static void main(String[] args)
{
Thread t1 = new Thread(new Test (true));
Thread t2 = new Thread(new Test (false));
t1.start();
t2.start();
}
}