线程之线程池(ExecutorService)


复制代码

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

public class TraditionalThreadPlool {

/**
* 线程池
*/
public static void main(String[] args) {

////创建了有3条线程的线程池
// ExecutorService threadPool = Executors.newFixedThreadPool(3);
////创建了10条任务(就是i)
// for(int i=0;i<10;i++){
// final int currentTask = i+1;
// threadPool.execute(new Runnable(){
// @Override
// public void run() {
////每个任务的内容就是执行十个循环
// for(int i=0;i<10;i++){
// try {
// Thread.sleep(50);
// } catch (InterruptedException e) {
//// TODO Auto-generated catch block
// e.printStackTrace();
// }
// System.out.println(Thread.currentThread().getName()+" is servering for " + currentTask + " looping " + (i+1) + " circle");
// }
// }
//
// });
// }
////关闭线程池
// threadPool.shutdown();
// /*
// * 上面就是创建了一个固定的线程池,初始化线程池里有三条线程在等候工作
// * 现在来了十项任务每项任务就是执行循环十次
// * 从打印的信息中我们可以看出,只有三条线程在工作
// */


////创建了缓存线程池,缓存线程池的线程个数是不固定的,随着任务的增加而增加线程池中的线程数,随着任务结束而消亡
// ExecutorService threadPool = Executors.newCachedThreadPool();
////创建了10条任务(就是i)
// for(int i=0;i<10;i++){
// final int currentTask = i+1;
// threadPool.execute(new Runnable(){
// @Override
// public void run() {
////每个任务的内容就是执行十个循环
// for(int i=0;i<10;i++){
// try {
// Thread.sleep(50);
// } catch (InterruptedException e) {
//// TODO Auto-generated catch block
// e.printStackTrace();
// }
// System.out.println(Thread.currentThread().getName()+" is servering for " + currentTask + " looping " + (i+1) + " circle");
// }
// }
//
// });
// }
////关闭线程池
// threadPool.shutdown();
//


//// 下例是单例线程池,好处是这个线程死了还能在搞一个替补,解决了线程死了重新启动的问题
// ExecutorService threadPool = Executors.newSingleThreadExecutor();
////创建了10条任务(就是i)
// for(int i=0;i<10;i++){
// final int currentTask = i+1;
// threadPool.execute(new Runnable(){
// @Override
// public void run() {
////每个任务的内容就是执行十个循环
// for(int i=0;i<10;i++){
// try {
// Thread.sleep(50);
// } catch (InterruptedException e) {
//// TODO Auto-generated catch block
// e.printStackTrace();
// }
// System.out.println(Thread.currentThread().getName()+" is servering for " + currentTask + " looping " + (i+1) + " circle");
// }
// }
//
// });
// }
////关闭线程池
// threadPool.shutdown();


/*
* 用线程池启动定时器
*
*/
Executors.newScheduledThreadPool(3).schedule(
new Runnable(){
public void run() {
System.out.println("bombing");
}}, 10, TimeUnit.SECONDS);

}

}
复制代码
posted @ 2014-03-15 23:41  huidaoli  阅读(216)  评论(0编辑  收藏  举报