目录

一、引言

二、多线程池种类

三、多线程池实现

四、总结


一、引言

我们可以创建多线程了为什么要用多线程池?

服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多;如果在一个jvm里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足;

线程池主要用来解决线程生命周期开销问题和资源不足问题,简单来讲就是管理线程的池子,类似数据库连接池,如果自己写的话通过监听线程的生命周期也可以写出来。

二、多线程池种类

  • newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
  • newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
  • newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。
  • newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。

三、多线程池实现

举个简单的例子创建定长的多线程池newFixedThreadPool

public class TestThreadpool {public static  void main(String [] args){ExecutorService fixPool = Executors.newFixedThreadPool(5);for(int i=0;i<10;i++){fixPool.execute(new Thread(new Runnable() {public void run() {System.out.println(Thread.currentThread().getName()+"输出");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}}}));}}
}

输出结果:每次最多只能执行五个线程,多的话就只能排队等待

pool-1-thread-1输出
pool-1-thread-2输出
pool-1-thread-3输出
pool-1-thread-4输出
pool-1-thread-5输出
pool-1-thread-3输出
pool-1-thread-5输出
pool-1-thread-4输出
pool-1-thread-2输出
pool-1-thread-1输出

四、总结

  • 多线程池种类;
  • 多线程池实现;

Java多线程(五)——多线程的多线程池相关推荐

  1. JAVA 多线程 JAVA 如何开发一个自定义线程池

    1.多线程设计介绍 每一个线程的启动和结束都是比较消耗时间和占用资源的. 如果在系统中用到了很多的线程,大量的启动和结束动作会导致系统的性能变卡,响应变慢. 为了解决这个问题,引入线程池这种设计思想. ...

  2. 【Java 多线程】多线程带来的的风险-线程安全、多线程五个经典案例

    日常开发中如果用到多线程编程,也一定会涉及到线程安全问题 线程安全这个问题就不太好理解 正因为如此,程序猿们才尝试发明出更多的编程模型来处理并发编程的任务 例如:多进程.多线程.actor.csp.a ...

  3. java基础(六)多线程/设计模式

    这辈子没办法做太多事情,所以每一件都要做到精彩绝伦! People can't do too many things in my life,so everything will be wonderfu ...

  4. 【Java学习笔记九】多线程

    程序:计算机指令的集合,它以文件的形式存储在磁盘上,是应用程序执行的蓝本. 进程:是一个程序在其自身的地址空间中的一次执行活动.进程是资源申请.调度和独立运行的单位,因此,它使用系统中的运行资源.而程 ...

  5. JAVA:线程总结及多线程实现的两种方法

    JAVA:线程总结 目录 目录 JAVA:线程总结 JAVA:线程总结 01_多线程(多线程的引入)(了解) 02_多线程(多线程并行和并发的区别)(了解) 03_多线程(Java程序运行原理和JVM ...

  6. (四)Java中的多线程之间实现同步+多线程并发同步

    一.什么是线程安全问题 为什么有线程安全问题? 当多个线程同时共享同一个全局变量或静态变量,做写的操作(修改变量值)时,可能会发生数据冲突问题,也就是线程安全问题.但是做读操作时不会发生数据冲突问题. ...

  7. C#多线程学习(四) 多线程的自动管理(线程池) (转载系列)——继续搜索引擎研究...

    在多线程的程序中,经常会出现两种情况: 一种情况:   应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应                   这一般使用ThreadPo ...

  8. command对象提供的3个execute方法是_前阿里P9的Java面试重点3:多线程

    1. 并行和并发有什么区别? 并行:多个处理器或多核处理器同时处理多个任务. 并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行. 如下图: 并发 = ...

  9. java 锁旗标_Java多线程

    Java多线程 1. 多线程存在的意义 多线程最大的作用就是能够创建"灵活响应"的桌面程序,而编写多线程最大的困难就是不同线程之间共享资源的问题,要使这些资源不会同时被多个线程访问 ...

  10. java实现多线程抢单_JAVA实现多线程的四种方式

    JAVA多线程实现方式: 1.继承Thread类(无返回值) 2.实现Runnable接口(无返回值) 3.实现Callable接口,通过FutureTask包装器来创建Threak线程(有返回值) ...

最新文章

  1. python表示数字6_【Python 1-6】Python教程之——数字
  2. java存储字节,java 数目字转化成字节存储算法
  3. 什么时候html的过渡版本,CSS过渡与转换
  4. 16-Flutter移动电商实战-切换后页面状态的保持AutomaticKeepAliveClientMixin
  5. 【BZOJ1070】【codevs2436】修车,费用流
  6. sql 日周月统计和
  7. Linux基础急速入门:用 TCPDUMP 抓包
  8. jquery楼层效果
  9. Python实现统计代码行数功能
  10. 达梦数据库基础优化分享
  11. vue项目图标处理工具
  12. 明光杂感之四:足球与情境觉知(上)
  13. TensorFlow2.0 学习笔记(五):循环神经网络(RNN)
  14. MySQL 面试知识点 汇总
  15. vs2010c语言一闪而过,[转载]关于vs2010运行C程序时,运行结果窗口一闪而过的问题...
  16. mall-swarm微服务商城系统
  17. android density像素密度匹配规则
  18. y700支持m2硬盘_别再浪费电脑的潜力,这些笔记本电脑都能升级NVMe固态硬盘
  19. html5星际,纯原版复刻 牛人打造星际争霸HTML5版
  20. 江苏金丰机电有限公司参观考察

热门文章

  1. 金字塔c_C/C++编程笔记:C语言入门题之正倒金字塔,正反三角形代码详解
  2. 最受开发人员欢迎的JDBC接口
  3. PCL之估计点云子集的表面法线
  4. mybatis 依赖于jdbc_第1章 MyBatis快速入门
  5. Confluence 6 针对合并完全失败的内容重新运行合并
  6. Linux命令解释之sudo
  7. 广发银行大数据管控互联网风险
  8. 「非推广」为什么我说本是设计师专属的『数位板』,也是程序猿+科研狗的开会神器?
  9. 【李宏毅2020 ML/DL】P14 Tips for training DNN | 激活函数、Maxout、正则、剪枝 Dropout
  10. 【操作系统/OS笔记08】进程的定义、组成、PCB、生命周期管理、状态变化模型、挂起模型