Java ExecutorService如何与线程池结合使用

发布时间:2025-02-07 06:31:36 作者:小樊
来源:亿速云 阅读:84

Java的ExecutorService是一个用于管理和控制线程的高级接口,它可以与线程池结合使用,以提高系统性能和资源利用率。下面是如何将ExecutorService与线程池结合使用的示例:

  1. 导入必要的包:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
  1. 创建一个固定大小的线程池:
int numberOfThreads = 5; // 设置线程池中的线程数量
ExecutorService executorService = Executors.newFixedThreadPool(numberOfThreads);
  1. 提交任务到线程池:
for (int i = 0; i < 10; i++) {
    final int taskNumber = i;
    executorService.submit(() -> {
        System.out.println("Task " + taskNumber + " is executed by thread " + Thread.currentThread().getName());
    });
}
  1. 关闭线程池:

在提交完所有任务后,需要关闭线程池。这将导致线程池停止接受新的任务,并开始等待已提交的任务完成。

executorService.shutdown();
  1. 等待线程池关闭:

在某些情况下,你可能需要等待线程池完全关闭,以确保所有任务都已完成。可以使用awaitTermination方法来实现这一点。

try {
    if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
        executorService.shutdownNow();
    }
} catch (InterruptedException e) {
    executorService.shutdownNow();
}

将以上代码整合在一起,完整的示例如下:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

public class ExecutorServiceExample {
    public static void main(String[] args) {
        int numberOfThreads = 5;
        ExecutorService executorService = Executors.newFixedThreadPool(numberOfThreads);

        for (int i = 0; i < 10; i++) {
            final int taskNumber = i;
            executorService.submit(() -> {
                System.out.println("Task " + taskNumber + " is executed by thread " + Thread.currentThread().getName());
            });
        }

        executorService.shutdown();

        try {
            if (!executorService.awaitTermination(60, TimeUnit.SECONDS)) {
                executorService.shutdownNow();
            }
        } catch (InterruptedException e) {
            executorService.shutdownNow();
        }
    }
}

这个示例展示了如何使用ExecutorService创建一个固定大小的线程池,并将任务提交给线程池执行。最后,关闭线程池并等待所有任务完成。

推荐阅读:
  1. java如何使用ExecutorService关闭线程池?
  2. Java的线程池

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:使用Java ExecutorService如何监控任务执行情况

下一篇:ExecutorService如何帮助管理Java多线程

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》