package SaleTickets;
public class SaleTickets implements Runnable{
private int tickets = 100;
public void run() {
for(int i = 1;i<=100;i++) {
if(tickets<=0) {
break;
}
System.out.println(Thread.currentThread().getName()+"售出第"+this.tickets--+"张票");
}
try {
Thread.sleep((int)(Math.random()*10));
}catch(InterruptedException e) {
}
System.out.println(Thread.currentThread().getName()+"窗口票已售完");
}
public static void main(String []args) {
SaleTickets r = new SaleTickets();
new Thread(r,"售票员A").start();
new Thread(r,"售票员B").start();
new Thread(r,"售票员C").start();
new Thread(r,"售票员D").start();
}
public class SaleTickets implements Runnable{
private int tickets = 100;
public void run() {
for(int i = 1;i<=100;i++) {
if(tickets<=0) {
break;
}
System.out.println(Thread.currentThread().getName()+"售出第"+this.tickets--+"张票");
}
try {
Thread.sleep((int)(Math.random()*10));
}catch(InterruptedException e) {
}
System.out.println(Thread.currentThread().getName()+"窗口票已售完");
}
public static void main(String []args) {
SaleTickets r = new SaleTickets();
new Thread(r,"售票员A").start();
new Thread(r,"售票员B").start();
new Thread(r,"售票员C").start();
new Thread(r,"售票员D").start();
}
}
运行结果如下图所示:

本文介绍了一个使用Java实现的多线程售票程序案例。该程序通过四个售票员线程并发执行,演示了如何控制资源同步以避免超发票的情况。每个售票员线程独立运行,售出一定数量的票并输出相应的信息。
254

被折叠的 条评论
为什么被折叠?



