关于售票窗口的多线程。
package 三个售票窗口;
public class 售票窗口 {
public static void main(String[] args) {
//实例化站台对象,为每一个站台取名字
Station station1=new Station("窗口1");
Station station2=new Station("窗口2");
Station station3=new Station("窗口3");
//让每一个站台对象各自工作
station1.start();
station2.start();
station3.start();
}
}
public class Station extends Thread{
public Station(String name) {
super(name);//给线程名字赋值
}
//为了保持票数的一致,票数静态
static int tick=20;
//创建一个静态钥匙
static Object ob="aa";//值是任意的
//重写run方法,实现买票操作
@Override
public void run() {
while(tick>0) {
synchronized(ob) {//使用一个锁
//进去的人会把钥匙拿在手上,出来后才把钥匙拿出来
if(tick>0) {
System.out.println(getName()+"卖出了第"+tick+"张票");
tick--;
}
else {
System.out.println("票卖完了");
}
}
try {
sleep(1000);//休息1s
}
catch(InterruptedException e){
e.printStackTrace();
}
}
}
}