假设售票厅当日可售100张票,由2个窗口线程完成售卖工作,为避免一张票同时被2个窗口售卖,使用多线程同步。
public class Test{
public static void main(String argv[]){
TicketWindow task=new TicketWindow();
task.win1.start();//启动task的win1线程
(1) ;//启动task的win2线程
}
}
class TicketWindow implements Runnable{
Thread win1,win2;
TicketWindow(){
(2) ; //创建win1,当前TicketWindow类的实例是win1的目标对象
win2=new Thread(this); //创建win2,当前TicketWindow类的实例是win2的目标对象
}
private int tickets=10;
(3) {//重写run方法
while(true){
sendTicket();//调用方法sendTicket
}
}
public (4) //将售票方法设为同步方法
{
if(tickets>0){
System.out.println(Thread.currentThread().getName()+"---卖出的票"+tickets--);
}
else{
System.exit(0);
}
}
}