您的位置:首页 > 职场人生

黑马程序员_线程死锁

2013-03-23 22:12 176 查看
------- android培训java培训、期待与您交流! ----------

死锁

同步中嵌套同步

  也就是有两个房子,A和B,主人A 拿着B房间的锁,B主人拿着A房间的锁,A拿不到B的锁,就进不去房间

而B拿不到A的锁,也进不去房间,两人相持不下

死锁属于操作系统的概念了……其实很好理解。最经典的例子就是,You first,You first问题。

 一个门,两个“中国人”,都很有礼貌,走碰头了,都想过这个门,两个人都谦让对方先过,结果是,谁也过不去……。

还有就是哲学家问题!说是四个哲学家坐在桌子上等着吃饭,每个人一边一根筷子,四个人四根筷子。

一个人拿到两根筷子的时候才能吃。否则等待…… ,有一种情况就是,四个人,每个人都拿了一根筷子,

  还没有人放手。结果四个人都饿死……

class Lock implements Runnable

 {

    private boolean flag;

    public Lock(boolean flag)

{

         this.flag=flag;

}

public void run()

{

if(flag)

{

while(true)

{

synchronized(MyLock.locka) //a锁中嵌套 b锁

{

System.out.println("if locka");

synchronized(MyLock.lockb)

{

                       System.out.println("if lockb");

                }

}

}

        }

      else

{
while(true)
{
synchronized(MyLock.lockb) //b 锁中嵌套a锁
{
System.out.println("else lockb");

synchronized(MyLock.locka)

                  {

                       System.out.println("MyLock.locka");

}
}

          }

}

}

}

 class MyLock

 {

static Object locka=new Object();

    static Object lockb=new Object();

}

 

 public class LockDemo {

public static void main(String[] args) {

         Thread lock1=new Thread(new Lock(false));

       Thread lock2=new Thread(new Lock(true));

lock1.start();

lock2.start();

    }


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  多线程 同步 死锁
相关文章推荐