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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 911288373 中级黑马   /  2012-12-31 17:03  /  1214 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

//先定义一个Ticket类
class Ticket
{
private String hcp;//数量

public Ticket(String paramHcp)
        {
this.hcp = paramHcp;
        }
public String getHcp(){
return this.hcp;
}
}
//在SealWindow中打印Ticket的相应值(数量)
public class SealWindow implements Runnable
        {
private static in tick = 100;
boolean flag = true;
public void run()
        {
                if(flag)
                {
                        while(true)
                        {
                                synchronized(SealWindow.class)
                                {
                                        if(tick>0)
                                        {
                                                try(Thread.sleep(10);}catch(Exception e){}
                                                System.out.println(Thread.currentThread().getBane()+tick--);
                                        }
                                }
                        }
                }
                else
                        while(true)
                        show();
        }
        public static synchronized void show()
        {
                if(tick>0)
                {
                                                try(Thread.sleep(10);}catch(Exception e){}
                        System.out.println(Thread.currentThread().getBane()+tick--);
                }
       
        }
}

class TicketSealCenter
{
        public static void main(String[] args)
        {

Ticket tk = new Ticket(100);
System.out.println("票数: "+tk.getSl());
                Ticket t = new Ticket();
                Thread t1 = new Thread(t);
                Thread t2 = new Thread(t);
                t1.start();
                try{Thread.sleep(10);}catch(Exception e){}
                t.flag = false;
                t2.start();
        }
}

2 个回复

倒序浏览
你具体要改成什么样子?有什么要求啊?
回复 使用道具 举报
本帖最后由 赵彦辉 于 2012-12-31 20:38 编辑

回复之前先给你提几点意见:
1、贴代码时建议使用 code 模式,这样方便程序员阅读你的代码
2. 建议你写代码时注意格式,别人修改你代码时也不用要为格式浪费很长时间
3,遇到问题,首先想到的是自己思考,你要完成的这段代码是 毕老师视频中有讲解的
    你可以多看几遍那段视频
下面是我给你修改的代码,希望对你有帮助
注:建议把代码放到 UltraEdit里面阅读,在论坛看着比较费劲
  1. //先定义一个Ticket类
  2. class Ticket
  3. {
  4.     public int hcp;//数量
  5.    
  6.     public Ticket(int paramHcp)
  7.     {
  8.         this.hcp = paramHcp;
  9.     }
  10.     public int getHcp() {
  11.         return this.hcp;
  12.     }
  13. }
  14. //在SealWindow中打印Ticket的相应值(数量)
  15. class SealWindow implements Runnable
  16. {
  17.     private Ticket t;
  18. //    private static in tick = 100;
  19.     boolean flag = true;
  20.     SealWindow(Ticket t)
  21.     {
  22.         this.t = t;
  23.     }
  24.     public void run()
  25.     {
  26.          if(flag)
  27.          {
  28.              while(true)
  29.               {
  30.                   synchronized(SealWindow.class)
  31.                {
  32.             if(t.hcp > 0)
  33.             {
  34.                 try{Thread.sleep(10);}catch(Exception e){}
  35.                       System.out.println(Thread.currentThread().getName() +"---run" + t.hcp--);
  36.             }
  37.            }
  38.         }
  39.     }
  40.         else
  41.              while(true)
  42.              {
  43.         show();
  44.       }
  45.        }
  46.   
  47.     public  synchronized void show()
  48.     {
  49.     if(t.hcp > 0)
  50.     {
  51.             try{Thread.sleep(10);}catch(Exception e){}
  52.             System.out.println(Thread.currentThread().getName() + "_________show" + t.hcp--);
  53.       }
  54.     }
  55. }

  56. public class TicketSealCenter
  57. {
  58.     public static void main(String[] args)
  59.     {
  60.         Ticket tk = new Ticket(100);
  61.         System.out.println("票数: " + tk.getHcp());
  62.         SealWindow seal = new SealWindow(tk);
  63.         Thread t1 = new Thread(seal);
  64.         Thread t2 = new Thread(seal);
  65.         t1.start();
  66.         try{Thread.sleep(10);}catch(Exception e){}
  67.         seal.flag = false;
  68.         t2.start();
  69.   }
  70. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马