import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ThreadPoolTest {
/**
* @param args
*/
public static void main(String[] args) {
// ExecutorService threadPool = Executors.newFixedThreadPool(3);
// ExecutorService threadPool = Executors.newCachedThreadPool();//自动分配线程,线程数是动态的
ExecutorService threadPool = Executors.newSingleThreadExecutor();//保证有一个线程,死了就马上恢复一个,找一个替补
/*for (int i = 0; i < 10; i++) {
final int task = i;
threadPool.execute(new Runnable() {
@Override
public void run() {
for (int j = 0; j < 10; j++) {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()
+ " is looping of " + j + " for task of "
+ task);
}
}
});
}*/
// threadPool.shutdownNow();//立即杀死,不顾其他的任务(0,1,2)
// threadPool.shutdown();//10个任务都执行了
//定时器
/*Executors.newScheduledThreadPool(3).schedule(new Runnable() {
@Override
public void run() {
System.out.println("bomb!!!!!!!!xxxxxxxxxxxxxxxxxxxxxxxxxxx");
}
}, 10, TimeUnit.SECONDS);*/
//每隔一定的频率时间循环执行
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("bomb!!!!!!!!xxxxxxxxxxxxxxxxxxxxxxxxxxx");
}
},
10, //initialDelay
3,//period
TimeUnit.SECONDS);
}
/*
* 更精细的设置可以使用开源框架 Quartz 进行作业调度
*/
}