Java多线程(五)——多线程的多线程池
目录
一、引言
二、多线程池种类
三、多线程池实现
四、总结
一、引言
我们可以创建多线程了为什么要用多线程池?
服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多;如果在一个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多线程(五)——多线程的多线程池相关推荐
- JAVA 多线程 JAVA 如何开发一个自定义线程池
1.多线程设计介绍 每一个线程的启动和结束都是比较消耗时间和占用资源的. 如果在系统中用到了很多的线程,大量的启动和结束动作会导致系统的性能变卡,响应变慢. 为了解决这个问题,引入线程池这种设计思想. ...
- 【Java 多线程】多线程带来的的风险-线程安全、多线程五个经典案例
日常开发中如果用到多线程编程,也一定会涉及到线程安全问题 线程安全这个问题就不太好理解 正因为如此,程序猿们才尝试发明出更多的编程模型来处理并发编程的任务 例如:多进程.多线程.actor.csp.a ...
- java基础(六)多线程/设计模式
这辈子没办法做太多事情,所以每一件都要做到精彩绝伦! People can't do too many things in my life,so everything will be wonderfu ...
- 【Java学习笔记九】多线程
程序:计算机指令的集合,它以文件的形式存储在磁盘上,是应用程序执行的蓝本. 进程:是一个程序在其自身的地址空间中的一次执行活动.进程是资源申请.调度和独立运行的单位,因此,它使用系统中的运行资源.而程 ...
- JAVA:线程总结及多线程实现的两种方法
JAVA:线程总结 目录 目录 JAVA:线程总结 JAVA:线程总结 01_多线程(多线程的引入)(了解) 02_多线程(多线程并行和并发的区别)(了解) 03_多线程(Java程序运行原理和JVM ...
- (四)Java中的多线程之间实现同步+多线程并发同步
一.什么是线程安全问题 为什么有线程安全问题? 当多个线程同时共享同一个全局变量或静态变量,做写的操作(修改变量值)时,可能会发生数据冲突问题,也就是线程安全问题.但是做读操作时不会发生数据冲突问题. ...
- C#多线程学习(四) 多线程的自动管理(线程池) (转载系列)——继续搜索引擎研究...
在多线程的程序中,经常会出现两种情况: 一种情况: 应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应 这一般使用ThreadPo ...
- command对象提供的3个execute方法是_前阿里P9的Java面试重点3:多线程
1. 并行和并发有什么区别? 并行:多个处理器或多核处理器同时处理多个任务. 并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来看那些任务是同时执行. 如下图: 并发 = ...
- java 锁旗标_Java多线程
Java多线程 1. 多线程存在的意义 多线程最大的作用就是能够创建"灵活响应"的桌面程序,而编写多线程最大的困难就是不同线程之间共享资源的问题,要使这些资源不会同时被多个线程访问 ...
- java实现多线程抢单_JAVA实现多线程的四种方式
JAVA多线程实现方式: 1.继承Thread类(无返回值) 2.实现Runnable接口(无返回值) 3.实现Callable接口,通过FutureTask包装器来创建Threak线程(有返回值) ...
最新文章
- python表示数字6_【Python 1-6】Python教程之——数字
- java存储字节,java 数目字转化成字节存储算法
- 什么时候html的过渡版本,CSS过渡与转换
- 16-Flutter移动电商实战-切换后页面状态的保持AutomaticKeepAliveClientMixin
- 【BZOJ1070】【codevs2436】修车,费用流
- sql 日周月统计和
- Linux基础急速入门:用 TCPDUMP 抓包
- jquery楼层效果
- Python实现统计代码行数功能
- 达梦数据库基础优化分享
- vue项目图标处理工具
- 明光杂感之四:足球与情境觉知(上)
- TensorFlow2.0 学习笔记(五):循环神经网络(RNN)
- MySQL 面试知识点 汇总
- vs2010c语言一闪而过,[转载]关于vs2010运行C程序时,运行结果窗口一闪而过的问题...
- mall-swarm微服务商城系统
- android density像素密度匹配规则
- y700支持m2硬盘_别再浪费电脑的潜力,这些笔记本电脑都能升级NVMe固态硬盘
- html5星际,纯原版复刻 牛人打造星际争霸HTML5版
- 江苏金丰机电有限公司参观考察
热门文章
- 金字塔c_C/C++编程笔记:C语言入门题之正倒金字塔,正反三角形代码详解
- 最受开发人员欢迎的JDBC接口
- PCL之估计点云子集的表面法线
- mybatis 依赖于jdbc_第1章 MyBatis快速入门
- Confluence 6 针对合并完全失败的内容重新运行合并
- Linux命令解释之sudo
- 广发银行大数据管控互联网风险
- 「非推广」为什么我说本是设计师专属的『数位板』,也是程序猿+科研狗的开会神器?
- 【李宏毅2020 ML/DL】P14 Tips for training DNN | 激活函数、Maxout、正则、剪枝 Dropout
- 【操作系统/OS笔记08】进程的定义、组成、PCB、生命周期管理、状态变化模型、挂起模型