A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class TestLock implements Runnable
  2. {
  3.         private boolean flag;
  4.         TestLock(boolean flag)
  5.         {
  6.                 this.flag=flag;
  7.         }
  8.         public void run()
  9.         {
  10.                 if (flag)
  11.                 {  while(true)
  12.                 {
  13.                    synchronized (Lock.n1)
  14.                         {System.out.println("IF Locka");
  15.                                  synchronized(Lock.n2)
  16.                                 {
  17.                                         System.out.println("IF Lockb");
  18.                                 }
  19.                         }
  20.                 }}
  21.                 else
  22.                         while(true)
  23.                 {{
  24.                         synchronized (Lock.n2){
  25.                                 System.out.println("else Locka");
  26.                                 synchronized (Lock.n1){
  27.                                         System.out.println("else Lockb");
  28.                                 }
  29.                         }
  30.                 }
  31.         }}
  32. }
  33. class Lock{
  34.         Lock(){}
  35.          static  Lock n1=new Lock();
  36.          static  Lock n2=new Lock();
  37. }
  38. class DeadLock{
  39.         public static void main(String args[])
  40.         {
  41.                 System.out.println("Hello");
  42.                 Thread t1=new Thread(new TestLock(true));
  43.                 Thread t2=new Thread(new TestLock(false));
  44.                 t1.start();
  45.                 t2.start();
  46.         }
  47. }
复制代码
这个是毕老师视频中的一个例子,我知道synchronized()是以两个不同的lock对象传入,但是毕老师在卖票例子中举得this跟obj是不同锁,为什么在这个里面传入obj跟this就不会产生死锁现象呢?

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

1 个回复

倒序浏览
{:soso_e100:}貌似是沙发,我发现其中的class 之后的名字中的第二个字母的首字母没有大写,呵呵。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马