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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


我写了一个代码运行会死锁的类,但是我在eclipse上运行了八十来遍,结果硬是一次死锁情况都没遇上,请教一下,是我的代码有小问题了还是我人品有问题


  1. package cn.itcast;
  2. class Demoa{}

  3. class Demob{}


  4. public class DiedClok extends Thread {
  5.         Demoa da = new Demoa();
  6.         Demob db = new Demob();
  7.        
  8.         private boolean flag;
  9.         public DiedClok(boolean flag){
  10.                 this.flag = flag;
  11.         }
  12.          
  13.         public void run(){
  14.                 if(flag){synchronized(da){
  15.                         System.out.println(getName()+"da");
  16.                         }synchronized(db){
  17.                         System.out.println(getName()+"db");
  18.                         }
  19.                 }else {synchronized(db){
  20.                         System.out.println(getName()+"db");
  21.                         }synchronized(da){
  22.                         System.out.println(getName()+"da");
  23.                        
  24.                 }
  25.                
  26.                
  27.                
  28.                
  29.         }
  30.        

  31.         }
  32.         }
复制代码


  1. package cn.itcast;

  2. public class DeidclokDemo {
  3.         public static void main(String[] args) {
  4.                 DiedClok dc =new DiedClok(true);
  5.                 DiedClok dc1 = new DiedClok (false);
  6.                 dc.setName("1号");
  7.                 dc1.setName("2号");
  8.                 dc.start();
  9.                 dc1.start();
  10.                
  11.         }

  12. }
复制代码

评分

参与人数 2黑马币 +12 收起 理由
闪电无忧 + 4 神马都是浮云
cyd1058 + 8 很给力!

查看全部评分

5 个回复

倒序浏览
本帖最后由 梁思宇 于 2015-7-9 12:53 编辑

Demoa da = new Demoa();
Demob db = new Demob();
这个...
你建了两个类的实例,分别执行
然后每个实例里都有一个da,也都有一个db
这就相当于,一个人两把钥匙...
而不是两个人两把钥匙....
所以锁不上
回复 使用道具 举报
给力!加油!
回复 使用道具 举报
这能锁上我直播吃键盘
回复 使用道具 举报
这个问题好多人都会碰到,你需要在自己设定的锁前面加上private static  final 修饰,这样才会是所有对象共用的锁
回复 使用道具 举报
闪电无忧 发表于 2015-7-9 22:16
这个问题好多人都会碰到,你需要在自己设定的锁前面加上private static  final 修饰,这样才会是所有对象共 ...

谢了啊。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马