package cn.javaious.concurrence;
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(); //创建缓存线程池
ExecutorService threadPool = Executors.newSingleThreadExecutor(); //创建单一线程池 好处:线程死了会产生替补线程
for(int i=1; i<=10; i++) {
final int task = i;
threadPool.execute(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for(int j=1;j<10;j++) {
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+ " is looping of "+ j +" for task of "+task);
}
}
});
}
System.out.println("all of 10 tasks have committed! ");
// threadPool.shutdownNow(); 关闭线程池
//用线程池启动定时器
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("boming!");
}
}, 6,2, TimeUnit.SECONDS); //6秒后boming,以后每隔2秒boming
}
}