如何使用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线程池来实现买票功能。希望这篇文章对你有所帮助,如果有任何疑问,请随时向我询问。祝你学习顺利!