public static void moreThread() { try { int threadNum = 0; for (int i = 0; i < 10; i++) { threadNum++; final int currentThreadNum = threadNum; exe.execute(new Runnable() { @Override public void run() { try { System.out.println("子线程[" + currentThreadNum + "]开启"); Thread.sleep(1000*10); } catch (InterruptedException e) { e.printStackTrace(); }finally{ System.out.println("子线程[" + currentThreadNum + "]结束"); } } }); } System.out.println("已经开启所有的子线程"); exe.shutdown(); System.out.println("shutdown():启动一次顺序关闭,执行以前提交的任务,但不接受新任务。"); while(true){ if(exe.isTerminated()){ System.out.println("所有的子线程都结束了!"); break; } Thread.sleep(1000); } } catch (InterruptedException e) { e.printStackTrace(); }finally{ System.out.println("主线程结束"); } } 子线程[1]开启 子线程[6]开启 子线程[2]开启 子线程[5]开启 子线程[9]开启 已经开启所有的子线程 子线程[3]开启 子线程[7]开启 子线程[10]开启 shutdown():启动一次顺序关闭,执行以前提交的任务,但不接受新任务。 子线程[4]开启 子线程[8]开启 子线程[6]结束 子线程[3]结束 子线程[7]结束 子线程[2]结束 子线程[1]结束 子线程[5]结束 子线程[9]结束 子线程[4]结束 子线程[10]结束 子线程[8]结束 所有的子线程都结束了! 主线程结束 原贴地址:http://blog.csdn.net/lisheng19870305/article/details/44747741