J.U.C 系列 Tools之Executors
上个章节说了Tools中的其他四个工具类,本节我们来看一看工具类中的老大Executors,为什么说它是老大,肯定是因为他的功能最多最强大。
一 Executors是什么
Executors 是一个线程池管理类,Executors为Executor,ExecutorService,ScheduledExecutorService,ThreadFactory和Callable类提供了一些工具方法。Executors可以用于方便的创建线程池。
这里面的Executor,ExecutorService,ScheduledExecutorService,ThreadFactory,Callable,ThreadPoolExecutor等我会放到下一章节来讲解,本节我们就只是了解Executors是什么,能做什么。
此类支持以下各种方法:
* 创建并返回设置有常用配置的ExecutorService的方法。
* 创建并返回设置有常用配置的ScheduledExecutorService 的方法。
* 创建并返回“包装的”ExecutorService 方法,它使特定于实现的方法不可访问,只让ExecutorService接口的方法可用。
* 创建并返回 ThreadFactory 的方法,它可将新创建的线程设置为已知的状态。
* 创建并返回非闭包形式的 Callable 的方法,这样可将其用于需要 Callable 的执行方法中。
下面重点来了:
| newXXX() | 描述 | 参数与返回值 | 源码 | 适用场景 |
|
public static ExecutorService newFixedThreadPool (int nThreads); |
创建一个可重用固定线程数的线程池, 以共享的无界队列方式来运行这些线程 |
参数:n 池中的线程数 抛出:如果 nThreads <= 0. IllegalArgumentException 如果 threadFactory 为 null NullPointerException - |
public static ExecutorService |
适用于为了满足 资源管理的需求, 二需要限制当前线程 数量的应用场景, 适用于负载比较重 的服务器 |
|
public static ExecutorService newSingleThreadExecutor(); |
创建一个使用单个 worker 线程的 Executor,以无界队列方式来运 行该线程。 可保证顺序地执行 各个任务,并且在任意给定的 时间不会有多个线程是活动的。 |
返回:新创建的单线程 Executor |
public static ExecutorService |
适用于需要保证 顺序的执行各个任务, 并且在任意时间 点不会有多个 线程活动的应用场景 |
|
public static ExecutorService newCachedThreadPool(); public static ExecutorService newCachedThreadPool (ThreadFactory f); |
创建一个可根据需要创建新线程的 线程池,但是在以前构造的线程可 用时将重用它们,并在需要时使用 提供的 ThreadFactory创建新线程。 |
参数:threadFactory - 创建新线程时使用的工厂 如果 threadFactory 为 null |
public static ExecutorService |
大小无界的线程池, 适用执行很多短期 异步任务的小程序 或者负载较轻的服务器 |
|
public static ScheduledExecutorService newSingleThread- ScheduledExecutor(); |
创建一个单线程执行程序, 它可安排在给定延迟后运行 命令或者定期地执行。 |
返回:新创建的安排执行程序 |
public static ScheduledExecutorService |
适用于多个后台线程执行周期任务 |
J.U.C 系列 Tools之Executors的更多相关文章
- J.U.C 系列之 Tools
JDK 5.0 开始,java并发大师Doug lea 为我们带来了更高效更应用的java并发API Java.util.concurrent包,简称J.U.C J.U.C 体系由如下五个知识结构构成 ...
- j.u.c系列(11)---之并发工具类:Exchanger
写在前面 前面三篇博客分别介绍了CyclicBarrier.CountDownLatch.Semaphore,现在介绍并发工具类中的最后一个Exchange.Exchange是最简单的也是最复杂的,简 ...
- j.u.c系列(06)---之锁条件:Condition
写在前面 在没有Lock之前,我们使用synchronized来控制同步,配合Object的wait().notify()系列方法可以实现等待/通知模式.在Java SE5后,Java提供了Lock接 ...
- j.u.c系列(03)---之AQS:AQS简介
写在前面 Java的内置锁一直都是备受争议的,在JDK 1.6之前,synchronized这个重量级锁其性能一直都是较为低下,虽然在1.6后,进行大量的锁优化策略,但是与Lock相比synchron ...
- j.u.c系列(02)---线程池ThreadPoolExecutor---tomcat实现策略
写在前面 本文是以同tomcat 7.0.57. jdk版本1.7.0_80为例. 线程池在tomcat中的创建实现为: public abstract class AbstractEndpoint& ...
- j.u.c系列(01) ---初探ThreadPoolExecutor线程池
写在前面 之前探索tomcat7启动的过程中,使用了线程池(ThreadPoolExecutor)的技术 public void createExecutor() { internalExecutor ...
- Day9 - J - 吉哥系列故事——恨7不成妻 HDU - 4507
单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: 2+1+4=7 7+7=7*2 77=7 ...
- j.u.c系列(10)---之并发工具类:Semaphore
写在前面 Semaphore是一个计数信号量,它的本质是一个"共享锁". 信号量维护了一个信号量许可集.线程可以通过调用acquire()来获取信号量的许可:当信号量中有可用的许可 ...
- j.u.c系列(09)---之并发工具类:CyclicBarrier
写在前面 CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).因为该 barrier 在释放等待线程后可以重用,所以 ...
随机推荐
- 【从业余项目中学习1】C# 实现XML存储用户名密码(MD5加密)
最近在写一个C#的项目,用户需求是实现Winform的多文档界面与Matlab算法程序之间的交互.做了一段时间发现,这既能利用业余时间,实战中也可学习一些技术,同时刚毕业也增加一份收入.所以后面会不断 ...
- mysql> set sql_mode=''; mysql> set sql_mode='traditional';
mysql> set sql_mode=''; mysql> set sql_mode='traditional';
- Bootstrap开发
1.BootStrap开发工具 任意前端工具 专门Bootstrap工具:Jetstrap(下载地址:jetstrap.com) 2.官网: www.bootcss.com(“下载Bootstrap” ...
- MyEclipse导入JAVA工程显示红色叉叉的解决方法
当我们有时候导入一个新的工程的时候可能会出现以下这种情况,基本上是因为jar包路径的问题. 解决方法如下: 1.右击工程,选择properties 2.选择 Java Build Path -> ...
- centos命令行常用操作
1.查看某个端口占用 lsof -i tcp:80 2.查看是否安装了防火墙 service iptables status 查看是否启用防火墙/etc/init.d/iptables status ...
- js 关系运算符
1.大于 > (小于 效果一样) > //true > //false //false,如果有一个字符串,字符串转换成数值在比较 ' //true,如果两个都是字符串,则比较第 ...
- 问题解决 Visual Studio 2015 无法复制文件“D:\swapfile.sys”
莫名其妙的问题..度娘 必应统统不给力.. 还是找了谷大爷 严重性 代码 说明 项目 文件 行 列 类别 源 项目级别 工具 禁止显示状态错误 无法复制文件“D:\swapfile.sys”,原因是找 ...
- vue中列表的过渡
<style> .v-enter,.v-leave-to{ opacity: 0; } .v-enter-active,.v-leave-active{ transition: opaci ...
- Annual Congress of MUD(最大流)
Annual Congress of MUD 时间限制: 1 Sec 内存限制: 128 MB提交: 80 解决: 10[提交] [状态] [讨论版] [命题人:admin] 题目描述 Multi ...
- BIO与NIO
BIO与NIO 1.传统BIO (1)特点 面向数据流 阻塞式传输 一个客户端对应一个线程 在客户机增多的情况下,线程资源随之增多,会造成cpu资源枯竭 (2)需求 客户机向服务器输出字符串,逐一 ...