多线程实现买票功能
public class MyTest3 {
public static void main(String argv[]) {
Ticket t = new Ticket();
//Sole s = new Sole(t);
new Thread(new Sole(t)).start();
new Thread(new Sole(t)).start();
}
}
class Ticket{
int amount = 10;
public void sold(){
amount--;
}
public int getAmount(){
return amount;
}
}
class Sole implements Runnable{
public Ticket ticket;
public Sole(Ticket t){
this.ticket = t;
}
public synchronized void run() {
while(true){
int a = ticket.getAmount();
if(a>0){
// try {
// Thread.currentThread().sleep(100);
// } catch (Exception e) {
// e.printStackTrace();
// }
ticket.sold();
System.out.println(Thread.currentThread().getName()+":"+(a-1));
}else{
System.out.println("over");
break;
}
}
}
}
运行结果:
Thread-0:9
Thread-0:8
Thread-0:7
Thread-0:6
Thread-0:5
Thread-0:4
Thread-0:3
Thread-0:2
Thread-0:1
Thread-0:0
over
over