ThreadPoolTaskExecutor多个线程如何submit代码
时间: 2024-06-17 16:01:23 浏览: 97
ThreadPoolTaskExecutor是Java中用于执行异步任务的工具,通常在并发编程中使用线程池来管理多个线程并提高效率。如果你想在ThreadPoolTaskExecutor中使用多个线程提交任务,你可以按照以下步骤进行:
1. 创建ThreadPoolTaskExecutor实例:
```java
ExecutorService executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5); // 核心线程数
executor.setMaxPoolSize(10); // 最大线程数
executor.setQueueCapacity(20); // 队列容量
executor.setThreadNamePrefix("TaskExecutor-"); // 设置线程名称前缀
executor.initialize(); // 初始化线程池
```
2. 创建Runnable或Callable任务:
```java
Runnable task1 = () -> {
// 任务1的代码
};
Callable<String> task2 = () -> {
// 任务2,可能有返回值
return "Task2 Result";
};
```
3. 使用`submit()`方法提交任务到线程池:
```java
// 提交Runnable任务
Future<?> future1 = executor.submit(task1);
// 提交Callable任务,获取返回值
Future<String> future2 = executor.submit(task2);
String result2 = future2.get(); // 等待任务完成并获取结果
```
4. 关闭线程池:
```java
// 当不再需要线程池时,记得关闭它以释放资源
executor.shutdown();
try {
if (!executor.awaitTermination(60, TimeUnit.SECONDS)) {
executor.shutdownNow(); // 如果未关闭,尝试停止所有任务
}
} catch (InterruptedException e) {
executor.shutdownNow(); // 如果被中断,强制停止
}
```
阅读全文