利用线程池复用线程

package thread.pool;

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

public class Demo1 {
	public static void main(String[] args) {
		/**
		 * 线程池案例
		 * 1:利用线程池复用线程减少反复创建线程次数
		 *      提高线程使用效率
		 * 2:利用线程池保护线程总数,避免服务器的资源
		 *      使用过载
		 *      
		 */
		//利用工厂方法newFixedThreadPool创建一个线程池对象
		ExecutorService pool =Executors.newFixedThreadPool(10);
		//创建10个任务交给线程池,复用线程执行
		for(int i =0 ;i <=10; i++) {
		//创建被线程执行的任务
		Runnable task =new PrintTask(i);
		pool.submit(task);
		}
	}
}

/** 被线程池执行的任务 */
class PrintTask implements Runnable {
	int n;

	public PrintTask(int n) {
		this.n = n;
	}

	public void run() {
		Thread t = Thread.currentThread();
		for (int i = 0; i < 10; i++) {
			System.out.println(t + "task:" + n);
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		System.out.println(n+"over!");
	}
}

  

posted @ 2018-01-30 10:24  清风已来  阅读(181)  评论(0编辑  收藏  举报