public class Sale {
//出售票数
private static Integer number;
//初始化时间
private final long time;
Sale(Integer number,long time){
this.number = number;
this.time = time;
}
/**
* 出售,使用了同步的方法
*/
synchronized public void sale(){
if(haveNumber()) {
number--;
System.out.println(Thread.currentThread().getName() + "卖掉一张,还有:" + number + "张票");
}
}
/**
* 时间打印
*/
public void printTime(){
System.out.println(System.currentTimeMillis() - time);
}
/**
* 判断是否还有票
*
* @return
*/
public boolean haveNumber(){
return number>0;
}
}
public class Tiket extends Thread{
private final Sale s;
Tiket(Sale s){
this.s = s;
}
@Override
public void run() {
super.run();
while(s.haveNumber())
s.sale();
s.printTime();
}
}
public static void main(String[] args) {
Integer i = 100000;
long time = System.currentTimeMillis();
Sale s = new Sale(i,time);
Tiket t1 = new Tiket(s);
Tiket t2 = new Tiket(s);
Tiket t3 = new Tiket(s);
Tiket t4 = new Tiket(s);
t1.start();
t2.start();
t3.start();
t4.start();
}