前台執行緒:需要等待所有前台子執行緒執行完,主線程才能繼續往下走。除非強行關掉主線程,所有前台子執行緒才會強行結束。
後台執行緒:不需要等待後台執行緒執行完,主線程會繼續往下走。當主線程正常結束或非正常結束,所有後台子執行緒會強行結束,不需要等待非後台子執行緒執行完成。
//特別注意後台執行緒依附的主程序如果一直存在,後台執行緒啟動後,除非強行關掉主線程或後台執行緒正常結束,否則後台執行緒會一直在執行。
執行緒池主線程等待子程序退出:
可以呼叫 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 能區分兩種不同型別的執行緒 前台執行緒和後台執行緒。這兩者的區別就是 應用程式必須執行完所有的前台執行緒才可以退出 而對於後台執行緒,應用程式則可以不考慮其是否已經執行完畢而直接退出,所有的後台執行緒在應用程式退出時都會...