要求:创建三个线程作为三个窗口售票,总票数为20张,通过创建Thread子类的方式来实现
class Window extends Thread{
private static int ticket=20;
//同一个类的所有对象共享一个静态变量
//票数是被三个窗口共享的,所以为static变量
//②.重写run方法
public void run() {
while (true) {
int a=21-ticket;//计算售出的为第多少张票
if(ticket>0) {
System.out.println(Thread.currentThread().getName()+" 卖出第 "+a+"张票");
ticket--;
}
else {
break;
}
}
}
}
public class WindowsTest {
public static void main(String[] args) {
//③.创建Thread类的子类的对象
Window t1=new Window();
Window t2=new Window();
Window t3=new Window();
//给线程重命名
t1.setName("窗口1");
t2.setName("窗口2");
t3.setName("窗口3");
//④.通过此对象调用start方法
t1.start();
t2.start();
t3.start();
}
}
运行结果
可能会有重票和错票的问题发生,属于线程的安全性问题,将在后续解决