/*
需求:简单的买票程序
多个窗口卖票
*/
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();
}
}
解决方法:通过另一种创建线程的方式。