/* 需求:简单的买票程序 多个窗口卖票 */ class TWindow extends Thread{ private static int tickNum = 100;//此处若不加static,则每个对象都可以售100张票,但是加static,tickNum的生命周期就很长 public void run(){ while(true){ if(tickNum >0){ System.out.println(Thread.currentThread().getName()" sale: "+ tickNum--); } } } } class Ticket{ public static void main(String[] args){ TWindow t1 = new TWindow(); TWindow t2 = new TWindow(); TWindow t3 = new TWindow(); TWindow t4 = new TWindow(); t1.start(); t2.start(); t3.start(); t4.start(); } }
class TWindow extends Thread{ private int tickNum = 100;//此处若不加static,只创建一个线程,四次开启运行线程 //会出现错误。可以用运动员跑步,start()为司令官发枪。第一次发枪,运动员跑出去了,第二次发枪,第三次发枪,第四次发枪。后面的发枪没意义。 //会提示线程状态出问题了。 public void run(){ while(true){ if(tickNum >0){ System.out.println(Thread.currentThread().getName()" sale: "+ tickNum--); } } } } class Ticket{ public static void main(String[] args){ TWindow t1 = new TWindow(); //TWindow t2 = new TWindow(); //TWindow t3 = new TWindow(); //TWindow t4 = new TWindow(); t1.start(); t1.start(); t1.start(); t1.start(); } }
解决方法:通过另一种创建线程的方式。