线程池
由各个博客总结归纳而来。
1.线程池的基本思想:
线程池的基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源。
2.线程池的核心代码样式
1 package BackStage; 2 3 import java.util.concurrent.Executors; 4 5 import java.util.concurrent.ExecutorService; 6 7 public class JavaThreadPool { 8 9 public static void main(String[] args) { 10 11 // 创建一个可重用固定线程数的线程池 12 13 ExecutorService pool = Executors.newFixedThreadPool(2); 14 15 // 创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口 16 17 Thread t1 = new MyThread(); 18 19 Thread t2 = new MyThread(); 20 21 Thread t3 = new MyThread(); 22 23 Thread t4 = new MyThread(); 24 25 Thread t5 = new MyThread(); 26 27 // 将线程放入池中进行执行 28 29 pool.execute(t1); 30 31 pool.execute(t2); 32 33 pool.execute(t3); 34 35 pool.execute(t4); 36 37 pool.execute(t5); 38 39 // 关闭线程池 40 41 pool.shutdown(); 42 43 } 44 45 } 46 47 class MyThread extends Thread { 48 49 @Override 50 51 public void run() { 52 53 System.out.println(Thread.currentThread().getName() + "正在执行。。。"); 54 55 } 56 57 }
3.线程池的类型:
1.单任务线程池
ExecutorService pool = Executors.newSingleThreadExecutor();
2.固定大小的线程池
ExecutorService poo延迟连接池 = Executors.newFixedThreadPool(2);
3.可变尺寸的线程池
ExecutorService pool = Executors.newCachedThreadPool();
4.延迟连接池
ScheduledExecutorService pool = Executors.newScheduledThreadPool(2);
5.单任务延迟连接池
ScheduledExecutorService pool = Executors.newSingleThreadScheduledExecutor();
6.自定义线程池
ThreadPoolExecutor pool = new ThreadPoolExecutor(2,3,2,TimeUnit.MILLISECONDS,bqueue);
自定义线程池的详细资料见此链接 http://www.infoq.com/cn/articles/java-threadPool/