java.util.concurrent包中线程池Executors的使用
2017-02-11 15:50
507 查看
线程池的概念与Executors类的使用
(1)创建固定大小的线程池–当有多个任务时,会先按照线程池中的数据执行任务,其他任务处于等待过程中,等执行完这批任务后再执行下批任务。
(2)创建缓存线程池,会根据任务的多少来创建线程
(3)创建单一线程池(该线程死掉后,系统会自动创建另一个线程)
(1)创建固定大小的线程池–当有多个任务时,会先按照线程池中的数据执行任务,其他任务处于等待过程中,等执行完这批任务后再执行下批任务。
(2)创建缓存线程池,会根据任务的多少来创建线程
(3)创建单一线程池(该线程死掉后,系统会自动创建另一个线程)
package cn.threadPool; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class ThreadPoolTest { /** * 创建线程池 */ public static void main(String[] args) { // 创建线程池,线程池中有三个线程 //ExecutorService threadPool=Executors.newFixedThreadPool(3); //创建缓存线程,会根据任务自动创建线程的个数 ExecutorService threadPool=Executors.newCachedThreadPool(); for(int n=0;n<10;n++){ final int task=n; // 往线程池中放10个任务,但线程池中只有三个线程,会三个任务执行完之后再执行三个。 threadPool.execute(new Runnable(){ @Override public void run() { for(int i=0;i<10;i++){ try { Thread.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName()+" 循环到"+i+" ,loop "+task); } } }); } System.out.println("任务结束"); //threadPool.shutdown();//线程执行完所有任务时,会关掉程序 /** * 用线程池启动定时任务 * */ Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable(){ @Override public void run() { System.out.println("booming"); } }, 2, 2, TimeUnit.SECONDS); } }
相关文章推荐
- C#线程间不能调用剪切板的解决方法
- C#多线程学习之(四)使用线程池进行多线程的自动管理
- C#线程同步的三类情景分析
- C#获取进程或线程相关信息的方法
- 简单对比C#程序中的单线程与多线程设计
- C#停止线程的方法
- C#子线程更新UI控件的方法实例总结
- C#线程队列用法实例分析
- C++使用CriticalSection实现线程同步实例
- c++线程池实现方法
- 基于C++实现的线程休眠代码
- C语言实现支持动态拓展和销毁的线程池
- c++实现简单的线程池
- VB读取线程、句柄及写入内存的API代码实例
- C#网络编程基础之进程和线程详解
- C#通过Semaphore类控制线程队列的方法
- C#多线程处理多个队列数据的方法
- C#实现控制线程池最大数并发线程
- C#实现线程安全的简易日志记录方法
- C#中线程同步对象的方法分析