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 在释放等待线程后可以重用,所以 ...
随机推荐
- ECMAScript Regex
Everything has its own regulation by defining its grammar. ECMAScript regular expressions pattern sy ...
- Spring实践系列-入门篇(一)
本文主要介绍了在本地搭建并运行一个Spring应用,演示了Spring依赖注入的特性 1 环境搭建 1.1 Maven依赖 目前只用到依赖注入的功能,故以下三个包已满足使用. <properti ...
- Java获取Date类型-针对SQL语句
简便使用Date类型: import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedState ...
- Spring Boot项目Circular view path问题解决
使用Spring Boot创建Spring MVC项目,访问url请求出现问题:Circular view path 1.问题描述 控制台打印: javax.servlet.ServletExcept ...
- java读取指定package下的所有class
JAVA如何扫描一个包下面的所有类,并加载到内存中去? spring中有一个<context:component-scan base-package="com.controller& ...
- 百万级数据库SQL优化大总结
网上关于SQL优化的教程很多,但是比较杂乱.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充. 这篇文章我花费了大量的时间查找资料.修改.排版,希望大家阅读之后,感觉 ...
- C盘空间太大,分区助手减小分区大小教程
首先看一个需要缩小C盘或需要减少分区空间的一个例子:“我的电脑里C盘剩余空间为530GB,除了C盘外还有一个D盘,但D盘的空间不到30GB,另外还有两个隐藏分区,一个200MB,一个15GB.我想把C ...
- 4 - 函数&装饰器 and 迭代器&生成器
函数是什么 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的.程序里函数的定义是: 定义:将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 ...
- Treap 实现名次树
在主流STL版本中,set,map,都是BST实现的,具体来说是一种称为红黑树的动态平衡BST: 但是在竞赛中并不常用,因为红黑树过于复杂,他的插入 5 种,删除 6 中,代码量极大(如果你要改板子的 ...
- 使用 NetBackup 命令创建 Hyper-V 策略(命令创建其他策略也是如此)
Veritas NetBackup™ for Hyper-V 管理指南 Product(s): NetBackup (8.1) 使用 NetBackup 命令创建 Hyper-V 策略 本主题介绍如何 ...