Executor的使用

package com.dci.api.listener;

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

public class MyThreadPool {
     public static void createPool() {
           /**
            * 通过工厂方法newFixedThreadPool(线程数)创建一个ExecutorService线程池
            */
           ExecutorService executor = Executors.newFixedThreadPool(10);
           int waitTime = 500;
          //           System.out.println("queue数"+TaskCallAPI.queue.size());
           if (Myqueue.size() > 0) {
               //这个for循环里的代码就是从线程池里获得线程对象,并执行多线程操作
            for (int i = 0; i < Myqueue.size() + 2; i++) {//开启一个新的线程异步执行队列中的任务
               Runnable runner = new ExecutorThread(Myqueue.poll());
               executor.execute(runner);
             }
           }
           try {
             executor.shutdown();// 只是将线程池置于关闭状态,不接受新任务,对正在运行的任务不影响
             executor.awaitTermination(waitTime, TimeUnit.MILLISECONDS);//MILLISECONDS毫秒
           } catch (InterruptedException ignored) {
           }
       }
    }

 

 

通过以上比较可知,用Executor框架执行任务的好处如下:
1、能够实现高并发和低延迟。
2、因为Executor的实现类可以很好的管理其线程的创建数量,可能任务提交给Executor的时候,已经有可以执行此任务的线程了,这样减少了
线程创建带来的延迟。因为Executor实例限制了,创建线程的数量,减少了线程之间对CPU的竞争,也在一定程度上提高了系统性能。对线程创建数量的限制,保证了系统的稳定性。
3、更加灵活的执行策略,因为Executor实现了任务的提交和执行的解耦,可以让我们灵活的更换任务的执行策略。
4、继承Executor接口的ExecutorService增加了生命周期的管理,更加贴近真实的生产开发。
作者:POPMUISE
链接:https://www.imooc.com/article/34127
来源:慕课网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值