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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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的对象这句放在成员位置上即可。

1 个回复

正序浏览
满足同步的几个条件过滤一线,学习了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马