Fork me on GitHub

13. 线程池

package com.gf.demo12;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * 一、线程池 : 提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。
 * 
 * 二、线程池的体系机构 : 
 *	java.util.concurrent.Executor : 负责线程的使用与调度的根接口
 *		|--ExecutorService 子接口 : 线程池的主要接口
 *			|--ThreadPoolExecutor 线程池的实现类
 *			|--ScheduledExecutorService 子接口 : 负责线程的调度
 *				|--ScheduledThreadPoolExecutor : 继承ThreadPoolExecutor ,实现ScheduledExecotorService
 *
 * 三、工具类: Executors
 * ExecutorSercice newFixedThreadPool() : 创建固定大小的线程池
 * ExecutorSercice newCachedThreadPool() : 缓存线程池,线程池的数量不固定,可以根据需求自动的更改数量。
 * ExecutorSercice newSingleThreadExecutor() : 创建单个线程池,线程池中只有一个线程
 * 
 * 
 * ScheduledExecutorService newScheduledThreadPool() : 创建固定大小的线程,可以延迟或定时执行任务。
 *
 */
public class TestThreadPool {
	
	public static void main(String[] args) {
		//1. 创建线程池
		ExecutorService pool = Executors.newFixedThreadPool(5);
		
		ThreadPoolDemo tpd = new ThreadPoolDemo();
		
		//2. 为线程池中的线程分配任务
		for(int i = 0 ; i < 10 ; i++){
			pool.submit(tpd);
		}
		
		//3. 关闭线程池,平和的方式关闭
		pool.shutdown();
	}

}

class ThreadPoolDemo implements Runnable{
	
	private int i = 0;

	@Override
	public void run() {
		while(100 >= i){
			System.out.println(Thread.currentThread().getName() + " : " + i++);
		}
	}
	
}

 

关注我的公众号,精彩内容不能错过

posted @ 2017-12-14 15:23  程序员果果  阅读(115)  评论(0编辑  收藏  举报