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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邓超军 中级黑马   /  2012-7-25 05:47  /  1952 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      昨天看毕老师讲多线程的教学视频,听完了一个,觉得自己听懂了,学会了,于是就按照毕老师讲课的思路,自己重新写了卖票的代码,代码如下:
  1. class Ticket implements Runnable
  2. {
  3.         private int num=400;
  4.         public void run()
  5.         {
  6.                 Object obj=new Object();
  7.                
  8.                 while(true)
  9.                 {  
  10.                         synchronized(obj)
  11.                     {
  12.                                 if(num>0)
  13.                                 {
  14.                                         try
  15.                                         {
  16.                                                 Thread.sleep(8);
  17.                                         }catch(Exception e){}
  18.                                         System.out.println(Thread.currentThread().getName()+"....sale : "+ num--);
  19.                                 }
  20.                         }
  21.                 }
  22.         }
  23. }
复制代码
跟毕老师的代码相比,看上去一样。接下来运行了一下,结果却让人大跌眼镜:竟然出现了-1,-2!这怎么可能?我是按照毕老师的视频里面的思路写的呀!问题究竟在哪里?我们把毕老师的代码拿出来,比一比:
  1. class Ticket implements Runnable
  2. {
  3.         private  int tick = 1000;
  4.         Object obj = new Object();
  5.         public void run()
  6.         {
  7.                 while(true)
  8.                 {
  9.                         synchronized(obj)
  10.                         {
  11.                                 if(tick>0)
  12.                                 {
  13.                                         //try{Thread.sleep(10);}catch(Exception e){}
  14.                                         System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--);
  15.                                 }
  16.                         }
  17.                 }
  18.         }
  19. }
复制代码
发现问题了吧!是的,就一句代码的位置不一样。99.9%一样,可是就那0.1%的不一样,结果相差悬殊!

这是我们学习最爱犯的一个毛病!你真的会了吗?不要以为自己听懂了,自己就学会了!只有你亲自动手去写了,才知道你是否真的会了!放下我们那颗骄傲的心吧!动动我们那双懒惰的手吧!让我们做一个“真的会了”的一个人!

评分

参与人数 1黑马币 +20 收起 理由
田向向 + 20 赞一个!,继续加油

查看全部评分

3 个回复

倒序浏览
顶!!!学习编程,切忌眼高手低。。。
回复 使用道具 举报
顶起来!学习决不能浮躁啊!
回复 使用道具 举报
学习决不能浮躁啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马