前台執行緒與後台執行緒及執行緒池中等待子執行緒結束

2021-06-21 11:37:57 字數 650 閱讀 9120

前台執行緒:需要等待所有前台子執行緒執行完,主線程才能繼續往下走。除非強行關掉主線程,所有前台子執行緒才會強行結束。

後台執行緒:不需要等待後台執行緒執行完,主線程會繼續往下走。當主線程正常結束或非正常結束,所有後台子執行緒會強行結束,不需要等待非後台子執行緒執行完成。

//特別注意後台執行緒依附的主程序如果一直存在,後台執行緒啟動後,除非強行關掉主線程或後台執行緒正常結束,否則後台執行緒會一直在執行。

執行緒池主線程等待子程序退出:

可以呼叫 executor.shutdown(),根據isterminated判斷是否執行完畢來決定主線程退出,否則直接退出後執行緒池所有子執行緒也就結束了。

另外如果子執行緒有阻塞,可用shutdownnow()打斷子執行緒

public class threadtest  

executor.shutdown();

while (!executor.isterminated())

system.out.println("end!");

} }

public class myrunnabltest implements runnable  catch (interruptedexception e) 

}}

C 前台執行緒與後台執行緒

由於時間片的原因,雖然所有執行緒在微觀上是序列執行的,但在巨集觀上可以認為是並行執行。執行緒有兩種型別 前台和後台。我們可以通過執行緒屬性isbackground false來指定執行緒的前後臺屬性 預設是前台執行緒 區別是 前台執行緒的程式,必須等所有的前台執行緒執行完畢後才能退出 而後台執行緒的...

前台執行緒和後台執行緒

net的公用語言執行時 common language runtime,clr 能區分兩種不同型別的執行緒 前台執行緒和後台執行緒。這兩者的區別就是 應用程式必須執行完所有的前台執行緒才可以退出 而對於後台執行緒,應用程式則可以不考慮其是否已經執行完畢而直接退出,所有的後台執行緒在應用程式退出時都會...

C 前台執行緒與後台執行緒區別

net的公用語言執行時 common language runtime,clr 能區分兩種不同型別的執行緒 前台執行緒和後台執行緒。這兩者的區別就是 應用程式必須執行完所有的前台執行緒才可以退出 而對於後台執行緒,應用程式則可以不考慮其是否已經執行完畢而直接退出,所有的後台執行緒在應用程式退出時都會...