JDK1.5中提供Executors工厂类来产生连接池,该工厂类中包含如下的几个静态工程方法来创建连接池:
1、public static ExecutorService newFixedThreadPool(int nThreads):创建一个可重用的、具有固定线程数的线程池。
2、public static ExecutorService newSingleThreadExecutor():创建一个只有单线程的线程池,它相当于newFixedThreadPool方法是传入的参数为1
3、public static ExecutorService newCachedThreadPool():创建一个具有缓存功能的线程池,系统根据需要创建线程,这些线程将会被缓存在线程池中。
4、public static ScheduledExecutorService newSingleThreadScheduledExecutor:创建只有一条线程的线程池,他可以在指定延迟后执行线程任务
5、public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize):创建具有指定线程数的线程池,它可以再指定延迟后执行线程任务,corePoolSize指池中所保存的线程数,即使线程是空闲的也被保存在线程池内。
import java.util.concurrent.*;
public class ExecutorTest {
public static void main(String[] args) {
ExecutorTest.executorFixThreadMethod();
//ExecutorTest.executorSingleThreadMethod();
// ExecutorTest.executorCachedThreadMethod();
}
public static void executorFixThreadMethod(){
//创建一个可重用、具有固定线程数的线程池
ExecutorService es=Executors.newFixedThreadPool(5);
for(int i=0;i<9;i++){
es.submit(new MyThread());
}
//关闭线程任务
es.shutdown();
}
public static void executorSingleThreadMethod(){
//创建只有一个单线程的线程池
Executors.newSingleThreadExecutor().submit(new MyThread());
}
public static void executorCachedThreadMethod(){
//创建具有缓存功能的线程池,大小根据需求创建,每次线程大小都不一样,但不会超过规定的任务数
ExecutorService es=Executors.newCachedThreadPool();
for(int i=0;i<10;i++){
es.submit(new MyThread());
}
}
public static void executorSingleScheduledMethod(){
//在给定初始延迟后首次启用的定期操作
Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(new MyThread(),0,1000,TimeUnit.MICROSECONDS);
}
public static void executorScheduledMethod(){
//指定线程池大小
ScheduledExecutorService ses=Executors.newScheduledThreadPool(5);
for(int i=0;i<10;i++){
ses.scheduleWithFixedDelay(new MyThread(),0,1000,TimeUnit.MICROSECONDS);
}
}
}
class MyThread extends Thread{
@Override
public void run(){
System.out.println(Thread.currentThread().getName());
}
}
参考文章:
http://jiajun.iteye.com/blog/453544
http://blog.youkuaiyun.com/tsyj810883979/article/details/8481621
http://blog.youkuaiyun.com/lonelyroamer/article/details/7993637