IT袋

当前位置:主页 > 经验教程 > 建站编程 >

常见线程池类型与应用场景

常见线程池类型与应用场景 线程池类型及其典型应用场景

时间:2023-11-27 22:25:19 来源:IT袋 作者:马勇
导读:常见线程池类型与应用场景,文章摘要:常见线程池类型与应用场景方面的讲解,下面为详细的介绍。 在java.util.concurrent.Executors类中提供了大量创建连接池的静态方法,常见就有四种。 创建使用固定

常见线程池类型与应用场景

文章摘要:常见线程池类型与应用场景方面的讲解,下面为详细的介绍。

在java.util.concurrent.Executors类中提供了大量创建连接池的静态方法,常见就有四种。

常见线程池类型与应用场景

  1. 创建使用固定线程数的线程池
 public static ExecutorService newFixedThreadPool(int nThreads) {
        return new ThreadPoolExecutor(nThreads, 
                                      0L, 
                                      TimeUnit.MILLISECONDS, 
                                      new LinkedBlockingQueue<>());
    }
  • 核心线程数与最大线程数一样,没有救急线程
  • 阻塞队列是LinkedBlockingQueue,最大容量为Integer.MAX_VALUE
  • 适用场景:适用于任务量已知,相对耗时的任务
  • 案例
/**
 * @author springboot葵花宝典
 * @description: TODO
 */
public class FixedThreadPoolTest {
    static class FixedThreadDemo implements Runnable{
        @Override
        public void run() {
            String name = Thread.currentThread().getName();
            for (int i = 0; i < 2; i++) {
                System.out.println(name + ":" + i);
            }
        }
    }
    public static void main(String[] args) throws InterruptedException {
        //创建一个固定大小的线程池,核心线程数和最大线程数都是3
        ExecutorService executorService = Executors.newFixedThreadPool(3);
        for (int i = 0; i < 5; i++) {
            executorService.submit(new FixedThreadDemo());
            Thread.sleep(10);
        }
        executorService.shutdown();
    }
}

2.单线程化的线程池,它只会用唯一的工作线程来执行任 务,保证所有任务按照指定顺序(FIFO)执行

public static ExecutorService newSingleThreadExecutor() {
        return new FinalizableDelegatedExecutorService
        (new ThreadPoolExecutor(1, 
        1, 
        0L,
        TimeUnit.MILLISECONDS, 
        new LinkedBlockingQueue<>()));
    }
  • 核心线程数和最大线程数都是1
  • 阻塞队列是LinkedBlockingQueue,最大容量为Integer.MAX_VALUE
  • 适用场景:适用于按照顺序执行的任务
  • 案例
/**
 * @author springboot葵花宝典
 * @description: TODO
 */
public class NewSingleThreadTest {
    static int count = 0;
    static class Demo implements Runnable {
        @Override
        public void run() {
            count++;
            System.out.println(Thread.currentThread().getName() + ":" + count);
        }
    }
    public static void main(String[] args) throws InterruptedException {
        //单个线程池,核心线程数和最大线程数都是1
        ExecutorService exec = Executors.newSingleThreadExecutor();
        for (int i = 0; i < 10; i++) {
            exec.execute(new Demo());
            Thread.sleep(5);
        }
        exec.shutdown();
    }
}

相关阅读

  • 什么是城域网络 其优缺点有哪些?

    什么是城域网络 其优缺点有哪些?

    为关注IT袋网网的网友们详解什么是城域网络的相关介绍,接下来分享详细内容。 城域网络,又被称为城域网或MAN,是指覆盖一个城市或地区的网络。 它通常用于连接一个城市内的各种设施,

  • 搜索引擎是如何工作的 搜索引擎的工作原理

    搜索引擎是如何工作的 搜索引擎的工作原理

    搜索引擎是如何工作的?搜索引擎的工作原理是什么? 可能很多新手站长都是不清楚的,下面IT袋小编就给大家分享 简述搜索引擎的工作原理! 搜索引擎的基本工作原理包括如下三个过程:首

  • 链路聚合bond接口常见的类型有哪些?

    链路聚合bond接口常见的类型有哪些?

    今天小编详解链路聚合bond接口常见的类型有哪些的电脑方面的小经验,很不错的方法小知识,建议收藏哦! bond接口是一种将多个物理网卡绑定成一个逻辑网卡的网络技术,它可以提高网络的

  • 广州在线网页制作工具 网站免费制作平台

    广州在线网页制作工具 网站免费制作平台

    跟大家说一说广州在线网页制作工具和网站免费制作平台的教程内容,具体介绍如下: 最简单的网页制作软件:其实我们完全可以利用办公软件来设计网页,只要网页内容不太复杂或只涉及静