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

© 王训印 中级黑马   /  2015-7-23 23:38  /  200 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

死锁:同步中嵌套同步,有关死锁代码是毕老师交代必须会自己写的代码
  1. package com.itheima;

  2. class Deadlock  implements Runnable
  3. {
  4.         private boolean flag ;
  5.        
  6.         Deadlock(boolean flag)
  7.         {
  8.                 this.flag = flag;
  9.         }
  10.        
  11.         @Override
  12.         public void run()
  13.         {
  14.                 if(flag)
  15.                 {
  16.                         while(true)
  17.                         {
  18.                                 synchronized (DeadlockT.locka)
  19.                                 {
  20.                                         System.out.println("if locha");
  21.                                         synchronized (DeadlockT.lockb)
  22.                                         {
  23.                                                 System.out.println("if lockb");
  24.                                         }                                       
  25.                                 }                               
  26.                         }
  27.                        
  28.                 }else
  29.                 {
  30.                         while(true)
  31.                         {
  32.                                 synchronized (DeadlockT.lockb)
  33.                                 {
  34.                                         System.out.println("else lockb");
  35.                                         synchronized (DeadlockT.locka)
  36.                                         {
  37.                                                 System.out.println("else locka");
  38.                                         }
  39.                                        
  40.                                 }
  41.                         }
  42.                                                        
  43.                 }                               
  44.         }       
  45. }

  46. class DeadlockT
  47. {
  48.         static Object locka = new Object();
  49.         static Object lockb = new Object();
  50. }

  51. class DeadlockTest
  52. {
  53.         public static void main(String[] args)
  54.         {
  55.                 Thread t1 = new Thread(new Deadlock(true));
  56.                 Thread t2 = new Thread(new Deadlock(false));
  57.                 t1.start();
  58.                 t2.start();
  59.         }       
  60. }
复制代码
您需要登录后才可以回帖 登录 | 加入黑马