业务介绍:

  多线程执行春节车票售卖!

代码逻辑如下:

/**
 * 售票任务
 */
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+"号售票厅的售票结束--");
    }
}
售票任务类

相关文章: