线程池的7种创建方式,强烈推荐你用它...(2)

简介: 线程池的7种创建方式,强烈推荐你用它...(2)

1.FixedThreadPool


创建一个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等待。


使用示例如下:


public static void fixedThreadPool() {
    // 创建 2 个数据级的线程池
    ExecutorService threadPool = Executors.newFixedThreadPool(2);
    // 创建任务
    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            System.out.println("任务被执行,线程:" + Thread.currentThread().getName());
        }
    };
    // 线程池执行任务(一次添加 4 个任务)
    // 执行任务的方法有两种:submit 和 execute
    threadPool.submit(runnable);  // 执行方式 1:submit
    threadPool.execute(runnable); // 执行方式 2:execute
    threadPool.execute(runnable);
    threadPool.execute(runnable);
}


执行结果如下:


微信图片_20220120145432.jpg


如果觉得以上方法比较繁琐,还用更简单的使用方法,如下代码所示:


public static void fixedThreadPool() {
    // 创建线程池
    ExecutorService threadPool = Executors.newFixedThreadPool(2);
    // 执行任务
    threadPool.execute(() -> {
        System.out.println("任务被执行,线程:" + Thread.currentThread().getName());
    });
}


2.CachedThreadPool


创建一个可缓存的线程池,若线程数超过处理所需,缓存一段时间后会回收,若线程数不够,则新建线程。


使用示例如下:


public static void cachedThreadPool() {
    // 创建线程池
    ExecutorService threadPool = Executors.newCachedThreadPool();
    // 执行任务
    for (int i = 0; i < 10; i++) {
        threadPool.execute(() -> {
            System.out.println("任务被执行,线程:" + Thread.currentThread().getName());
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
            }
        });
    }
}
相关文章
|
6月前
|
安全 Java
Qt经典面试题:Qt开启线程的几种方式
Qt经典面试题:Qt开启线程的几种方式
110 0
|
6月前
|
Java C#
C#学习相关系列之多线程(七)---Task的相关属性用法
C#学习相关系列之多线程(七)---Task的相关属性用法
|
存储 缓存 并行计算
【CUDA学习笔记】第四篇:线程以及线程同步(附案例代码下载方式)(一)
【CUDA学习笔记】第四篇:线程以及线程同步(附案例代码下载方式)(一)
590 0
|
缓存 并行计算 算法
【CUDA学习笔记】第四篇:线程以及线程同步(附案例代码下载方式)(二)
【CUDA学习笔记】第四篇:线程以及线程同步(附案例代码下载方式)(二)
346 0
|
编译器 Go 开发者
包使用注意事项和细节(1)|学习笔记
快速学习包使用注意事项和细节(1)
包使用注意事项和细节(1)|学习笔记
|
数据采集 SQL Java
Python控制线程或函数超时处理+实例代码展示
Python控制线程或函数超时处理+实例代码展示
428 0
Python控制线程或函数超时处理+实例代码展示
多线程顺序运行的 4 种方法,面试随便问!
多线程顺序运行的 4 种方法,面试随便问!
244 0
|
Java
线程池的7种创建方式,强烈推荐你用它...(7)
线程池的7种创建方式,强烈推荐你用它...(7)
86 0
线程池的7种创建方式,强烈推荐你用它...(7)
|
Java
线程池的7种创建方式,强烈推荐你用它...(4)
线程池的7种创建方式,强烈推荐你用它...(4)
147 0
线程池的7种创建方式,强烈推荐你用它...(4)
|
存储 缓存 资源调度
线程池的7种创建方式,强烈推荐你用它...(1)
线程池的7种创建方式,强烈推荐你用它...(1)
260 0
线程池的7种创建方式,强烈推荐你用它...(1)