线程池的简单理解及使用
2018-03-29 15:01
260 查看
线程池的技术背景
1、线程的创建和销毁很耗资源,重用线程池中的线程。减少因对象创建销毁所带来的性能开销
2、有效控制线程的最大并发数,提高系统资源利用率,同时避免过多的资源竞争,避免堵塞;
线程池框架Executor
Executor : 所有线程池的接口。
ExecutorService:增加Executor的行为(执行execute,关闭shutdown),是Executor实现类的最直接接口。
Executors : 提供一系列的工厂方法(静态方法),(直接调用)创建生成线程池。
eg:ExecutorService pool = Executors.newSingleThreadExecutor();
其中Executors生成的常见线程池可分为4类:
1、newSingleThreadExecutor
单个线程的线程池
2、newFixedThreadExecutor
固定数量线程池
3、newCacheThreadExecutor(推荐)
可缓存线程池,当线程池大小超过处理任务所需的线程,就会回收部分空闲线程。有任务来,又智能添加
4、newScheduleThreadExecutor
大小无限制线程池,支持定时和周期的执行线程
public class TestCachedThreadPool {
public static void main(String[] args) {
//创建一个可重用固定线程数的线程池
ExecutorService pool = Executors.newCachedThreadPool();
//创建实现了Runnable接口对象
Thread t1 = new Thread ();
Thread t2 = new Thread ();
Thread t3 = new Thread ();
Thread t4 = new Thread ();
Thread t5 = new Thread ();
//将线程放入池中进行执行
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
pool.execute(t4);
pool.execute(t5);
//关闭线程池
pool.shutdown();
}
}
1、线程的创建和销毁很耗资源,重用线程池中的线程。减少因对象创建销毁所带来的性能开销
2、有效控制线程的最大并发数,提高系统资源利用率,同时避免过多的资源竞争,避免堵塞;
线程池框架Executor
Executor : 所有线程池的接口。
ExecutorService:增加Executor的行为(执行execute,关闭shutdown),是Executor实现类的最直接接口。
Executors : 提供一系列的工厂方法(静态方法),(直接调用)创建生成线程池。
eg:ExecutorService pool = Executors.newSingleThreadExecutor();
其中Executors生成的常见线程池可分为4类:
1、newSingleThreadExecutor
单个线程的线程池
2、newFixedThreadExecutor
固定数量线程池
3、newCacheThreadExecutor(推荐)
可缓存线程池,当线程池大小超过处理任务所需的线程,就会回收部分空闲线程。有任务来,又智能添加
4、newScheduleThreadExecutor
大小无限制线程池,支持定时和周期的执行线程
public class TestCachedThreadPool {
public static void main(String[] args) {
//创建一个可重用固定线程数的线程池
ExecutorService pool = Executors.newCachedThreadPool();
//创建实现了Runnable接口对象
Thread t1 = new Thread ();
Thread t2 = new Thread ();
Thread t3 = new Thread ();
Thread t4 = new Thread ();
Thread t5 = new Thread ();
//将线程放入池中进行执行
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
pool.execute(t4);
pool.execute(t5);
//关闭线程池
pool.shutdown();
}
}
相关文章推荐
- JDK线程池简单使用
- 关于C#线程,线程池和并行运算的简单使用和对比
- Xapian ( Python ) 之 TermGenerator 的简单理解和使用示例
- Android ListView复杂使用方式简单理解
- 使用线程池和CountDownLatch计数器来进行抓取的简单事例2
- Socket编程: 使用简单线程池为Socket客户端服务
- JDK1.5中线程池的简单使用(java.util.concurrent.ThreadPoolExecut )
- 使用common-pool实现的一个简单的线程池
- 使用common-pool实现的一个简单的线程池
- 有效的使用和设计COM智能指针—条款4:理解ATL的CComPtr提倡简单
- 关于C#线程,线程池和并行运算的简单使用和对比
- ThreadPoolExecutor线程池的使用与理解
- 线程池技术个人理解以及c语言的简单实现
- 关于C#线程,线程池和并行运算的简单使用和对比
- JDK1.5中线程池的简单使用(java.util.concurrent.ThreadPoolExecut )
- 任务队列ThreadPoolExecutor线程池的使用与理解
- 关于C#线程,线程池和并行运算的简单使用和对比
- JAVA线程池Executor的简单使用
- Silverlight学习笔记一(理解一下机制,使用一下布局,实现一个简单的用户登录)
- 有效的使用和设计COM智能指针——条款4:理解ATL的CComPtr提倡简单,高效