模拟售票系统:
代码:
Ticket:
package shoupiao;
public class Ticket implements Runnable {
private int num;
public Ticket() {
}
public Ticket(int num) {
this.num = num;
}
@Override
public void run() {
String t = Thread.currentThread().getName();
System.out.printf("%s:线程启动..%n", t);
while (true) {
synchronized (this) {
if (num < 1) break;
System.out.printf("%s:售出一张票(座号:%d),剩余%d张票%n", t, num, --num);
try {
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
}
Thread.yield();
}
System.out.printf("%s:线程结束(票卖完了)%n", t);
}
}
SellTicket:
package shoupiao;
public class SellTicket {
public static void main(String[] args) {
//实现Runnable接口
Ticket t = new Ticket(10);
Thread t1 = new Thread(t,"科学大道");
Thread t2 = new Thread(t,"东风路");
Thread t3 = new Thread(t,"火车站");
Thread t4 = new Thread(t,"瑞达路");
t1.start();
t2.start();
t3.start();
t4.start();
}
}
结果如下所示: