Java多线程之线程池
//创建并返回一个线程池 ExecutorService es = Executors.newSingleThreadExecutor(); //此线程池只能容纳一个线程。放入的线程会依次执行,上一个执行完毕,才会执行下一个。 // ExecutorService es = Executors.newFixedThreadPool(10); //指定能容纳的最大线程数,达到最大数后无法扩容。这个用得最多 // ExecutorService es = Executors.newScheduledThreadPool(10); //指定线程池的初始大小,达到初始值后可以继续放入线程,会自动扩容,最大线程数受限于JVM的资源 // ExecutorService es = Executors.newCachedThreadPool(); //最大线程数受限于jvm的资源,如果一个线程空闲多少秒(默认60s),会自动回收该线程 //线程要自己放进去 es.execute(new Thread1()); //往线程池中放入一条线程,并开始执行此线程 es.execute(new Thread2()); //可以是extends Thread的类,也可以是实现Runnable接口的类 //es.submit(new Thread2()); //submit()和execute()作用差不多