Java并发编程: 线程池管理案例
线程池是Java并发编程中的一个重要工具,它能够有效地管理和复用线程。下面我们将通过一个简单的线程池管理案例来理解它的使用。
案例:生产订单
创建订单类:
public class Order {
private String id;
private String product;
// getters and setters
}
创建生产订单的逻辑类(例如
OrderProducer
):
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class OrderProducer implements Runnable {
private final List
public void addOrder(Order order) {
orders.add(order);
}
@Override
public void run() {
for (Order order : orders) {
// 生产订单的逻辑,例如发送邮件等
System.out.println("Processing Order: " + order.getId());
// 模拟耗时操作,以展示线程池如何管理并发
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
3. **创建线程池**(例如`FixedThreadPool`,线程数固定):
```java
ExecutorService executor = Executors.newFixedThreadPool(5); // 创建包含5个线程的线程池
- 生产订单并提交给线程池处理:
```java
OrderProducer producer = new OrderProducer();
// 添加一些订单到producer中
producer.addOrder(new Order(id: “1”, product: “Product A”)));
for (Order order : producer.orders) {
executor.execute(producer); // 将order提交给线程池执行
}
5. **关闭线程池**:
```java
executor.shutdown(); // 关闭线程池,等待所有任务完成或超时
通过上述案例,你可以看到线程池是如何管理和复用线程的,这对于提高程序并发性能非常有帮助。
还没有评论,来说两句吧...