在Java5中,需要了解的是java.util.concurrent.Executors类的API,这个类提供大量创建连接池的静态方法。
1.固定大小的线程池,newFixedThreadPool
public class Test { public static void main(String[] args) { // 创建一个可重用固定线程数的线程池 ExecutorService pool = Executors.newFixedThreadPool(5); // 创建线程 Thread t1 = new MyThread(); Thread t2 = new MyThread(); Thread t3 = new MyThread(); Thread t4 = new MyThread(); Thread t5 = new MyThread(); // 将线程放入池中进行执行 pool.execute(t1); pool.execute(t2); pool.execute(t3); pool.execute(t4); pool.execute(t5); // 关闭线程池 pool.shutdown(); } } class MyThread extends Thread { @Override public void run() { System.out.println(Thread.currentThread().getName() + "正在执行。。。"); } }
2.单任务线程池newSingleThreadExecutor
3.可变尺寸的线程池newCachedThreadPool
可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。
4.延迟连接池newScheduledThreadPool
public class Test { public static void main(String[] args) { // 创建一个线程池,它可安排在给定延迟后运行命令或者定期地执行。 ScheduledExecutorService pool = Executors.newScheduledThreadPool(2); // 创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口 Thread t1 = new MyThread(); Thread t2 = new MyThread(); Thread t3 = new MyThread(); // 将线程放入池中进行执行 pool.execute(t1); // 使用延迟执行风格的方法 pool.schedule(t2, 1000, TimeUnit.MILLISECONDS); pool.schedule(t3, 10, TimeUnit.MILLISECONDS); // 关闭线程池 pool.shutdown(); } } class MyThread extends Thread { @Override public void run() { System.out.println(Thread.currentThread().getName() + "正在执行。。。"); } }
5.单任务延迟连接池,当然我们也可以自定义线程池。
最后欢迎大家访问我的个人网站:1024s
