窗口卖票的线程解决方案

技术交流群:233513714

 

public class SellTicket implements Runnable {
  // 定义100张票
  private int tickets = 100;
  //创建锁对象
  private Object obj = new Object();

  @Override
  public void run() {
    while (true) {
      synchronized (obj) {
        if (tickets > 0) {
          try {
            Thread.sleep(100);
          } catch (InterruptedException e) {
            e.printStackTrace();
          }
          System.out.println(Thread.currentThread().getName()+ "正在出售第" + (tickets--) + "张票");
        }
      }
    }
  }
}

 

 

public class SellTicketDemo {
  public static void main(String[] args) {
    // 创建资源对象
    SellTicket st = new SellTicket();

    // 创建三个线程对象
    Thread t1 = new Thread(st, "窗口1");
    Thread t2 = new Thread(st, "窗口2");
    Thread t3 = new Thread(st, "窗口3");

    // 启动线程
    t1.start();
    t2.start();
    t3.start();
  }
}

 

posted @ 2016-02-23 20:55  大浪不惊涛  阅读(86)  评论(0)    收藏  举报