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");
}
}