业务介绍:
多线程执行春节车票售卖!
代码逻辑如下:
/** * 售票任务 */ class TaskRunnable implements Runnable{ /** * 剩余车票数量 */ private AtomicInteger count; /** * 当前任务名称 */ private String taskName; /** * 任务锁 */ private ReentrantLock lock; public TaskRunnable(AtomicInteger count, String taskName, ReentrantLock lock) { this.count = count; this.taskName = taskName; this.lock = lock; } @Override public void run() { System.out.println(taskName + "号售票厅的开始售票~~"); while (true) { this.lock.lock(); if (this.count.get() <= 0) { //任务结束解锁 this.lock.unlock(); break; } System.out.println("恭喜抢到" + taskName+"号销售厅的车票! 当前剩余车票数" + this.count.decrementAndGet()); this.lock.unlock(); } System.out.println(taskName+"号售票厅的售票结束--"); } }