要求:创建三个线程作为三个窗口售票,总票数为20张,通过实现Runnable接口的方式来实现
//1.创建一个实现了Runnable接口的类
class Window1 implements Runnable{
private int Ticket =20;//多个线程共用一个对象,所以Ticket是同一对象下的多个线程共享的
Object object = new Object();
//2.实现类去实现Runnable中的抽象方法: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 WindowsTest1 {
public static void main(String[] args) {
//3.创建实现类的对象
Window1 w=new Window1();//一个对象,多个线程
//4.将此对象作为参数传递到Thread类的构造器中,创建Thread类的对象
Thread t1=new Thread(w);
Thread t2=new Thread(w);
Thread t3=new Thread(w);
t1.setName("窗口1");
t2.setName("窗口2");
t3.setName("窗口3");
//5.通过Thread类的对象调用start()方法
t1.start();
t2.start();
t3.start();
}
}
运行结果
可能会有重票和错票的问题发生,属于线程的安全性问题,将在后续解决