如何使用Java线程池实现买票功能

一、流程图

erDiagram
    线程池 --> 创建线程 --> 执行任务 --> 完成任务 --> 回收线程

二、状态图

stateDiagram
    [*] --> 未开始
    未开始 --> 已开始
    已开始 --> 已结束
    已结束 --> [*]

三、步骤

步骤 操作
1 创建线程池
2 创建任务类
3 提交任务到线程池
4 线程池执行任务

四、具体操作

1. 创建线程池

// 创建固定大小为5的线程池
ExecutorService executor = Executors.newFixedThreadPool(5);

在这里,我们使用Executors.newFixedThreadPool(5)方法创建了一个固定大小为5的线程池executor

2. 创建任务类

public class TicketTask implements Runnable {
    private int tickets = 10;
    
    @Override
    public void run() {
        while(tickets > 0) {
            System.out.println(Thread.currentThread().getName() + " sells ticket " + tickets--);
        }
    }
}

我们创建了一个TicketTask类来实现Runnable接口,重写run方法,在该方法中模拟售票的过程。

3. 提交任务到线程池

for (int i = 0; i < 5; i++) {
    executor.submit(new TicketTask());
}

我们使用executor.submit(new TicketTask())方法将任务TicketTask提交到线程池中。

4. 线程池执行任务

executor.shutdown();

最后,我们调用executor.shutdown()方法来关闭线程池。

结语

通过以上步骤,我们成功实现了使用Java线程池来实现买票功能。希望这篇文章对你有所帮助,如果有任何疑问,请随时向我询问。祝你学习顺利!