黑马程序员技术交流社区

标题: 关于锁(synchronized)的一个程序问题分享。看代码。。 [打印本页]

作者: 王广亚    时间: 2013-8-25 12:53
标题: 关于锁(synchronized)的一个程序问题分享。看代码。。
  1. <p> </p><p>class Ticketf implements Runnable{
  2. private int tick=100;
  3. Object obj=new Object();
  4. public void run() {   
  5.   while(true){
  6.    synchronized(obj){
  7.     if(tick>0){
  8.      try{
  9.      Thread.sleep(12);
  10.      }
  11.      catch(Exception e){}
  12.      System.out.println(Thread.currentThread().getName()+". ..sale"+tick--);
  13.     }
  14.    }
  15.   }
  16. }
  17. }</p><p>public class TickeDemof {
  18. public static void main(String[] args) {
  19.    Ticketf t=new Ticketf();
  20.    Thread t1=new Thread(t,"-001窗口");
  21.    Thread t2=new Thread(t,"-002窗口");
  22.    Thread t3=new Thread(t,"-003窗口");
  23.    Thread t4=new Thread(t,"-004窗口");
  24.    t1.start();
  25.    t2.start();
  26.    t3.start();
  27.    t4.start();
  28. }
  29. }</p><p> </p><p>
  30. </p><p> </p>
复制代码
大家有没有看出来这个代码哪儿出错了?对,就是因为不是同一个锁所以才出错了。把创建Object的对象这句放在成员位置上即可。


作者: javamov    时间: 2013-8-25 14:23
满足同步的几个条件过滤一线,学习了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2