package com.ticket.java;
/**
* 在练习三的基础上,售票结束后打印出各个窗口的售票数量。
* @author Administrator
*
*/
public class Ticket implements Runnable {
private int num=100;
private int a=0,b=0,c=0;
@Override
public void run() {
while(num>0) {
saleTicket();
}
}
private synchronized void saleTicket() {
if(num>0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(Thread.currentThread().getName().equals("窗口A")) {
a++;
}
if(Thread.currentThread().getName().equals("窗口B")) {
b++;
}
if(Thread.currentThread().getName().equals("窗口C")) {
c++;
}
num--;
System.out.println(Thread.currentThread().getName()+
" 卖出一张票,还剩:"+ num + "张");
}
if(num==0) {
System.out.println("窗口A共卖出去:" + a + "张票");
System.out.println("窗口B共卖出去:" + b + "张票");
System.out.println("窗口C共卖出去:" + c + "张票");
}
}
public static void main(String[] args) {
Ticket tic = new Ticket();
Thread t1 = new Thread(tic,"窗口A");
Thread t2 = new Thread(tic,"窗口B");
Thread t3 = new Thread(tic,"窗口C");
t1.start();
t2.start();
t3.start();
}
}
设计三个线程,模拟动物园售票窗口进行卖票,每天总共最多只能出售100张票,售完后所有窗口都停止售票,售票结束后打印出各个窗口的售票数量。
最新推荐文章于 2022-05-26 22:38:48 发布