文章目录

  • 一、Executor 线程池的体系UML图:
  • 二、Executor 、ExecutorService 、ThreadPoolExecutor 等类的说明
  • 三、代码示例:

一、Executor 线程池的体系UML图:

二、Executor 、ExecutorService 、ThreadPoolExecutor 等类的说明

1、线程池: 提供一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁的额外开销,提高了响应的速度。2、线程池的体系结构:
java.util.concurrent.Executor 负责线程的使用和调度的根接口|--ExecutorService 子接口: 线程池的主要接口|--ThreadPoolExecutor 线程池的实现类|--ScheduledExceutorService 子接口: 负责线程的调度|--ScheduledThreadPoolExecutor : 继承ThreadPoolExecutor,实现了ScheduledExecutorService3、工具类 : Executors
ExecutorService newFixedThreadPool() : 创建固定大小的线程池
ExecutorService newCachedThreadPool() : 缓存线程池,线程池的数量不固定,可以根据需求自动的更改数量。
ExecutorService newSingleThreadExecutor() : 创建单个线程池。 线程池中只有一个线程ScheduledExecutorService newScheduledThreadPool() : 创建固定大小的线程,可以延迟或定时的执行任务

三、代码示例:

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;public class TestThreadPool {public static void main(String[] args) throws InterruptedException, ExecutionException {//1. 创建线程池ExecutorService pool = Executors.newFixedThreadPool(5);List<Future<Integer>> list=new ArrayList<Future<Integer>>();for (int i = 0; i < 10; i++) {Future<Integer>  future=pool.submit(new Callable<Integer>() {public Integer call() throws Exception {int sum=0;for (int i = 0; i <=100; i++) {sum+=i;}return sum;}});list.add(future);}pool.shutdown();for (Future<Integer> future : list) {System.out.println(future.get());}      //      Future<Integer>  future=pool.submit(new Callable<Integer>() {//          public Integer call() throws Exception {//              int sum=0;
//              for (int i = 0; i <=100; i++) {//                  sum+=i;
//              }
//              return sum;
//          }
//      });
//      System.out.println(future.get());
//      pool.shutdown();        //      ThreadPoolDemo threadPoolDemo=new ThreadPoolDemo();
//
//      //2. 为线程池中的线程分配任务
//      for (int i = 0; i < 10; i++) {//          pool.submit(threadPoolDemo);
//      }
//
//      //3. 关闭线程池
//      pool.shutdown();
//              //      new Thread(threadPoolDemo).start();
//      new Thread(threadPoolDemo).start();}
}class ThreadPoolDemo implements Runnable{private int i=0;public void run() {while(i<=100){System.out.println(Thread.currentThread().getName()+" "+ i++);}}
}

线程池 ExecutorService 的使用例子相关推荐

  1. ExecutorService为创建的线程池ExecutorService pool = Executors.newFixedThreadPool(POOL_SIZE)

    ExecutorService就是要创建的线程池  JAVA中线程池用类ExecutorService代表 ,案例ExecutorService pool = Executors.newFixedTh ...

  2. Java线程池ExecutorService中重要的方法

    ExecutorService 介绍 ExecutorService是java线程池定义的一个接口,它在java.util.concurrent包中,在这个接口中定义了和后台任务执行相关的方法. Ja ...

  3. Java 并发编程之线程池 ExecutorService 接口

    ExecutorService 接口继承 Executor 接口,后者只有一个executor() 方法:前者则定义了shutdown()结束线程,submit()提交任务线程,isTerminate ...

  4. Java线程池ExecutorService

    开篇前,我们先来看看不使用线程池的情况: new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() {@Overridepu ...

  5. 线程池ExecutorService

    线程池:  任务提交到线程池,而不是直接交给某线程,线程池拿到任务后,它在内部找空闲的线程进行执行(封装),任务是提交给线程池,一个线程只能执行一个任务,但可以同时向一个线程池提交多个任务. 创建固定 ...

  6. 关于线程池ExecutorService的shutdown()与shutdownNow()方法的区别

    2019独角兽企业重金招聘Python工程师标准>>> 问题 这两天被一个问题折腾着:一个线程池,可能会有上万个任务要执行.问题是,一旦最先运行的线程执行完,整个线程池就结束了,哪怕 ...

  7. 浅析Java线程池 ExecutorService

    ExecutorService是Java中对线程池定义的一个接口,它java.util.concurrent包中. 创建一个什么样的ExecutorService的实例(即线程池)需要g根据具体应用场 ...

  8. java executor spring_java 线程池(ExecutorService与Spring配置threadPoolTaskExecutor)

    一.java ExecutorService实现 创建ExecutorService变量 private ExecutorService executor = null 2.执行对应任务时,首先生成线 ...

  9. 线程池ExecutorService中submit和execute区别

    1.execute是接口Executor的方法 ,submit是Executor子接口ExecutorService的方法(ExecutorService接口继承了Executor接口,Executo ...

最新文章

  1. spring之DelegatingFilterProxy
  2. linux脚本执行进度条,shell脚本实现进度条
  3. JDK 9早期版本安装后的Windows注册表清理
  4. HDU 2503 a/b + c/d(最大公约数与最小公倍数,板子题)
  5. 每天学点SpringCloud(八):使用Apollo做配置中心
  6. HTTP协议和HTTPS协议
  7. -webkit-filter
  8. ipadpro画流程图_Paper 推出适用于快速制作流程图的 Think 套件
  9. 设备综合效率OEE:基于数采的OEE优化分析
  10. GC算法精解(五分钟让你彻底明白标记/清除算法)
  11. 国密(3)- 预主密钥/主密钥计算和Finished消息的加解密
  12. WiFi温湿度传感器开发
  13. Leetcode刷题面试题 16.14. 最佳直线
  14. JAVA8的ConcurrentHashMap为什么放弃了分段锁,有什么问题吗,如果你来设计,你如何 设计。
  15. 接上一篇Trao文本行数及省略号问题
  16. 漏洞payload 靶机_【HTB系列】靶机Bitlab的渗透测试
  17. Java介绍,什么是Java?
  18. C#跑马灯抽签小程序
  19. 元宇宙之NFT行业分析:中国数字藏品行业有望走向规范化、差异化
  20. html中选择字体的元素,深入探讨CSS中字体元素

热门文章

  1. 微信小程序~textarea字数限制与计算
  2. ubuntu 19.04 与win10双系统 搜狗输入法安装教程
  3. 【C语言】简单猜字游戏
  4. linux打开udc端口命令,Openstack API常用命令
  5. 5分绩点转4分_5分绩点转4分_gpa5分制换算4分制(5分绩点转4分)
  6. 诗经 - 小雅 - 六月
  7. 嵌入式开发<串口调试工具>
  8. 2014腾讯校园招聘实习笔试题
  9. GreenPlum的Primary和Mirro切换恢复
  10. win7 解决飞秋无法接收文件(准备接收)问题