Java線程池關閉1-shutdown和isTerminated<轉>
阿新 • • 發佈:2017-06-03
ride shu csdn nat err interrupt .net fin cat
shutdown
void shutdown()
啟動一次順序關閉,執行以前提交的任務,但不接受新任務。若已經關閉,則調用沒有其他作用。
拋出:SecurityException - 如果安全管理器存在並且關閉,此 ExecutorService 可能操作某些不允許調用者修改的線程(因為它沒有保持RuntimePermission("modifyThread")),或者安全管理器的 checkAccess 方法拒絕訪問。
isTerminated
boolean isTerminated()
若關閉後所有任務都已完成,則返回true。註意除非首先調用shutdown或shutdownNow,否則isTerminated永不為true。返回:若關閉後所有任務都已完成,則返回true。
[java] view plain copy print?
- 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("主線程結束");
- }
- }
[html] view plain copy print?
- 子線程[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
Java線程池關閉1-shutdown和isTerminated<轉>