Java多线程综合练习
本文章为个人“Java零基础实战”学习笔记,仅供参考学习,侵权删
- 一场球赛的球票分3个窗口售出,共15张票,请用多线程模拟3个窗口的售票情况
class TicketRunnable implements Runnable{
//剩余票数
public int surpluCount = 15;
//已售票数
public int outCount = 0;
@Override
public void run() {
while(surpluCount > 0) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO: handle exception
}
if(surpluCount == 0) {
return;
}
synchronized (TicketRunnable.class) {
surpluCount--;
outCount++;
if(surpluCount == 0) {
System.out.println(Thread.currentThread().getName() + "售出第"+outCount+"张球票,球票已售完");
}else {
System.out.println(Thread.currentThread().getName() + "售出第"+outCount+"张球票,剩余"+surpluCount+"张球票");
}
}
}
}
}
public class TicketTest {
public static void main(String[] args) {
TicketRunnable ticketRunnable = new TicketRunnable();
new Thread(ticketRunnable,"窗口A").start();
new Thread(ticketRunnable,"窗口B").start();
new Thread(ticketRunnable,"窗口C").start();
}
}