javazx 发表于 2017-11-1 17:47:27

java多线程售票实例源码

demo项目名称:《项目java多线程售票实例源码》
java源代码:
package com.javazx.test.thread;

/**
* 车站类
*/
public class Station extends Thread {

    //构造方法 线程起名
    public Station(String name) {
      super(name);
    }

    static int tick = 20;//票总数
    static int step = 0;//当前是第几张票
    static Object ob = "aa";//锁对象 随意起名

    //重写run方法
    @Override
    public void run() {
      while (tick > 0) {
            synchronized (ob) {
                if (tick > 0) {
                  step++;
                  System.out.println(getName() + "卖出了第" + step + "张票");
                  tick--;
                } else {
                  System.out.println("无票了");
                }
            }
            //每卖一张 睡1000毫秒
            try {
                sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
      }
    }

}


package com.javazx.test.thread;

/**
* 窗口类
*/
public class Windows {
    public static void main(String[] args) {
      //初始化三个卖票窗口
      Station s1 = new Station("窗口1");
      Station s2 = new Station("窗口2");
      Station s3 = new Station("窗口3");

      //三个窗口开始卖票
      s1.start();
      s2.start();
      s3.start();

    }
}


运行结果:

窗口1卖出了第1张票
窗口3卖出了第2张票
窗口2卖出了第3张票
窗口1卖出了第4张票
窗口2卖出了第5张票
窗口3卖出了第6张票
窗口1卖出了第7张票
窗口2卖出了第8张票
窗口3卖出了第9张票
窗口3卖出了第10张票
窗口2卖出了第11张票
窗口1卖出了第12张票
窗口3卖出了第13张票
窗口2卖出了第14张票
窗口1卖出了第15张票
窗口3卖出了第16张票
窗口2卖出了第17张票
窗口1卖出了第18张票
窗口3卖出了第19张票
窗口1卖出了第20张票
无票了




页: [1]
查看完整版本: java多线程售票实例源码