pool.awaitTermination(1, TimeUnit.SECONDS); //可以和pool.shutdownNow();配合使用
public class MyThread extends Thread { @Override public void run() { System.out.println(Thread.currentThread().getId() + ":" + Thread.currentThread().getName() + "正在执行。。。"); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class TestFixedThreadPool { public static void main(String[] args) { // 创建一个可重用固定线程数的线程池 ExecutorService pool = Executors.newFixedThreadPool(2); // 创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口 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(); System.out.println("pool.isTerminated():" + pool.isTerminated()); try { pool.awaitTermination(1000, TimeUnit.SECONDS); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("pool.isTerminated():" + pool.isTerminated()); // while(!pool.isTerminated()) { // System.out.println("wait"); // try { // Thread.sleep(3000); // } catch (InterruptedException e) { // e.printStackTrace(); // } // } System.out.println("finished"); } }