浅谈Java中四大核心线程池

目录

  1. newCachedThreadPool
  2. newFixedThreadPool
  3. newScheduledThreadPool
  4. newSignleThreadPool

一、newCachedThreadPool

        /**
         * 构造函数:初始化线程池大小为0, 最大线程池大小为Integer.MAX_VALUE,线程闲置回收时间为60秒。
         * 执行策略:当接收任务时,如线程池中有闲置线程直接执行任务;如线程池中无闲置线程可用,则创建线程执行任务;
         * 如闲置线程闲置时间超过60秒,则进行销毁
         * 实例代码如下
         */
        ExecutorService newCacheThreadPool = Executors.newCachedThreadPool();
        for (int i = 0; i < 10; i++) {
            final int num = i;
            newCacheThreadPool.execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println("第" + num + "个线程" + "-" + Thread.currentThread().getName());
                }
            });
        }

二、newFixedThreadPool

        /**
         * 构造函数:指定线程池的最大值
         * 执行策略:当提交任务时, 如果线程池中有闲置线程, 则直接执行任务; 如果线程池中无线程, 则创建线程执行任务;
         * 如果线程池中无闲置线程, 且线程池数量达到最大值, 则将任务放入待执行任务队列。
         * 实例代码如下
         */
        ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(2);
        for (int i = 0; i < 10; i++) {
            final int num = i;
            newFixedThreadPool.execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println("第" + num + "个线程" + "-" + Thread.currentThread().getName());
                }
            });
        }

三、newScheduledThreadPool

        /**
         * 构造函数: 指定核心线程数量
         * 执行策略:当提交任务时, 如果线程池中有闲置线程, 则直接执行任务; 如果线程池中无线程, 则创建线程执行任务;
         * 如果线程池中无闲置线程, 且线程池数量达到最大值, 则将任务放入队列。
         * 延时执行实例代码如下
         */
        ScheduledExecutorService newScheduledThreadPool = Executors.newScheduledThreadPool(2);
        for (int i = 0; i < 10; i++) {
            final int num = i;
            newScheduledThreadPool.schedule(new Runnable() {
                @Override
                public void run() {
                    System.out.println("第" + num + "个线程" + "-" + Thread.currentThread().getName());
                }
            }, 1000, TimeUnit.MILLISECONDS);
        }


        /**
         * 构造函数: 指定核心线程数量
         * 执行策略:当提交任务时, 如果线程池中有闲置线程, 则直接执行任务; 如果线程池中无线程, 则创建线程执行任务;
         * 如果线程池中无闲置线程, 且线程池数量达到最大值, 则将任务放入队列。
         * 延时定时执行实例代码如下
         */
        ScheduledExecutorService newScheduledThreadPool = Executors.newScheduledThreadPool(2);
        for (int i = 0; i < 10; i++) {
            final int num = i;
            newScheduledThreadPool.scheduleAtFixedRate(new Runnable() {
                @Override
                public void run() {
                    System.out.println("第" + num + "个线程" + "-" + Thread.currentThread().getName());
                }
            }, 1000, 1000, TimeUnit.MILLISECONDS);
        }

四、newSingleThreadPool

        /**
         * 构造函数: 创建唯一的单线程
         * 执行策略: 当提交任务时, 如果线程闲置, 则直接执行任务; 如果闲置不闲置, 则将任务放入待执行队列
         * 实例代码如下
         */
        ExecutorService newSingleThreadPool = Executors.newSingleThreadExecutor();
        for (int i = 0; i < 10; i++) {
            final int num = i;
            newSingleThreadPool.execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println("第" + num + "个线程" + "-" + Thread.currentThread().getName());
                }
            });
        }

针对线程池的详细使用,还请具体查看源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值