Java中四种线程池介绍
个人资源与分享网站:http://xiaocaoshare.com/
Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而是一个执行线程的工具。真正的线程池接口是ExecutorService.
1.newCachedThreadPool
为每一个任务创建一个线程,并且可以重用已有的线程,无核心线程数量,超过60s的空闲线程将会被启用
/**无参构造方法*/
public static ExecutorService newCachedThreadPool() {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>());
}
/**有参的构造方法,可以传入threadFactory*/
public static ExecutorService newCachedThreadPool(ThreadFactory threadFactory) {
return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
60L, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>(),
threadFactory);
}
2.newFixedThreadPool
核心线程数和最大线程数是相同的,无空闲线程,核心线程数无限时要求,可以创建固定大小的线程数量,阻塞队列没有大小限制
/**创建固定大小的线程数*/
public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>());
}
/**创建固定大小的线程数,并可以指定threadFactory*/
public static ExecutorService newFixedThreadPool(int nThreads, ThreadFactory threadFactory) {
return new ThreadPoolExecutor(nThreads, nThreads,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(),
threadFactory);
3.newScheduledThreadPool
延期和定时执行线程的线程池,固定的核心线程数,最大线程数没有限制,空闲的线程会立即启用
/**创建固定大小的corePool*/
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) {
return new ScheduledThreadPoolExecutor(corePoolSize);
}
/**查看ScheduledThreadPoolExecutor类,发现是集成的ThreadPoolExecutor*/
public ScheduledThreadPoolExecutor(int corePoolSize) {
super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS,
new DelayedWorkQueue());
}
/**创建固定大小的corePool,并指定threadFactory*/
public static ScheduledExecutorService newScheduledThreadPool(
int corePoolSize, ThreadFactory threadFactory) {
return new ScheduledThreadPoolExecutor(corePoolSize, threadFactory);
}
/**查看ScheduledThreadPoolExecutor类,发现是集成的ThreadPoolExecutor*/
public ScheduledThreadPoolExecutor(int corePoolSize,
ThreadFactory threadFactory) {
super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS,
new DelayedWorkQueue(), threadFactory);
4.newSingleThreadExecutor
创建只有一个的核心线程,只处理一个线程,不能处理并发
/**无参*/
public static ExecutorService newSingleThreadExecutor() {
return new FinalizableDelegatedExecutorService
(new ThreadPoolExecutor(1, 1,
0L, TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>()));
}
/**指定threadFactory*/
public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory) {
return new DelegatedScheduledExecutorService
(new ScheduledThreadPoolExecutor(1, threadFactory));
}
Java中四种线程池介绍相关推荐
- java中四种线程池及poolSize、corePoolSize、maximumPoolSize
目录 ThreadPoolExecutor重要参数 poolSize.corePoolSize.maximumPoolSize 四种线程池 newFixedThreadPool newCachedTh ...
- java中四种线程池的区别
本文按: 一. 线程池的使用 二. 几种线程池的区别 三. 如何合理配置线程池 一.线程池的使用 在Java中,通常使用Executors 获取线程池.常用的线程池有以下几种: (1)CachedTh ...
- Java ExecutorService四种线程池的例子与说明
1.new Thread的弊端 执行一个异步任务你还只是如下new Thread吗? new Thread(new Runnable() {@Overridepublic void run() {// ...
- java 线程工厂_Java并发编程:Java的四种线程池的使用,以及自定义线程工厂
引言 通过前面的文章,我们学习了Executor框架中的核心类ThreadPoolExecutor ,对于线程池的核心调度机制有了一定的了解,并且成功使用ThreadPoolExecutor 创建了线 ...
- Java基础学习总结(85)——Java中四种线程安全的单例模式实现方式
- java中executors_Java通过Executors提供四种线程池
http://cuisuqiang.iteye.com/blog/2019372 Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如 ...
- [转]new Thread的弊端及Java四种线程池的使用
介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端 执行一个异步任务你还只是如下new ...
- Java多线程系列(五):线程池的实现原理、优点与风险、以及四种线程池实现
为什么需要线程池 我们有两种常见的创建线程的方法,一种是继承Thread类,一种是实现Runnable的接口,Thread类其实也是实现了Runnable接口.但是我们创建这两种线程在运行结束后都会被 ...
- Java 四种线程池
原文 介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用.本文是基础篇,后面会分享下线程池一些高级功能. 1.new Thread的弊端 执行一个异步任务你还只是如下n ...
最新文章
- Java学习之动态代理
- 深数据 - Deep Data
- gpedit msc组策略面板 win10在哪里_windows10的组策略在哪
- jquery学习。。
- 编写有效用例电子版_JavaScript ES6代理的实际用例
- 人不是被事物本身困扰是什么理论_你常常被负面情绪困扰么?怎么释放和解决负面情绪...
- [leetcode]1293. 网格中的最短路径
- 机器学习笔记【一】- 线性回归(末):统计学推导以及局部加权线性回归算法实例
- Unity 粒子特效(Particle System)大小自适应和层级的一些问题
- 权限设计=功能权限+数据权限
- oracle 10015 trace name adjust_scn level level_num
- 工信部宣布新规,微信支付存在漏洞必须整改,网友:马化腾会赔偿损失吗?
- 大学生信息安全(学习笔记一)
- errorImg异常图片显示
- ps cs6 mac破解方法
- CMS是Content Management System的缩写,意为内容管理系统。
- 路由器实验之简单交换实现 DHCP配置
- 分账系统多少钱?是如何收费的?
- emqx开启自定义权限认证
- 关于用出生日期查询生日还有多少天的问题
热门文章
- C++STL 优先队列priority_queue使用
- 推荐并简要分析一个silverlight的相册DEMO--ImageSnipper(V2)
- Classloader内存泄露
- 如果你的云服务商倒闭该怎么办?
- SAP有用的知识(持续更新)
- CV00-02-CV基本操作1
- java 方法里面定义接口_java – 当接口A在其方法签名中定义接口B时
- (C++)1002 A+B for Polynomials
- PyInstaller库的使用
- 遂宁专业计算机学校,遂宁计算机专业中职学校哪家强