java執行緒池主線程等待子執行緒執行完成

2021-08-25 02:26:44 字數 1354 閱讀 1414

今天討論乙個入門級的話題, 不然沒東西更新對不起空間和網域名稱~~

工作總往往會遇到非同步去執行某段邏輯, 然後先處理其他事情, 處理完後再把那段邏輯的處理結果進行彙總的產景, 這時候就需要使用執行緒了.

乙個執行緒啟動之後, 是非同步的去執行需要執行的內容的, 不會影響主線程的流程,  往往需要讓主線程指定後, 等待子執行緒的完成. 這裡有幾種方式.

站在 主線程的角度, 我們可以分為主動式和被動式.

主動式指主線主動去檢測某個標誌位, 判斷子執行緒是否已經完成. 被動式指主線程被動的等待子執行緒的結束, 很明顯, 比較符合人們的胃口. 就是你事情做完了, 你告訴我, 我彙總一下, 哈哈.

那麼主線程如何等待子執行緒工作完成呢. 很簡單, thread 類給我們提供了join 系列的方法, 這些方法的目的就是等待當前執行緒的die. 舉個例子.

publicclassthreadscatch(interruptedexceptione)catch(interruptedexceptione)catch(interruptedexceptione) catch (interruptedexception e)catch(interruptedexception e)catch(interruptedexception e) catch (interruptedexception e)catch(interruptedexception e)finallycatch(interruptedexception e)catch(interruptedexception e) catch (interruptedexception e)catch(interruptedexception e)finallycatch (interruptedexception e)catch(interruptedexception e) {

e . printstacktrace () ;

此種方法也適用於使用 executorservice summit 的任務的執行.

另外還有乙個並發包的類cyclicbarrier, 這個是(子)執行緒之間的互相等待的利器. 柵欄, 就是把大家都在乙個地方堵住, 就像水閘, 等大家都完成了之前的操作, 在一起繼續下面的操作. 不過就不再本篇的討論訪問內了.

Java主線程等待所有子執行緒執行完畢

需求 main方法中建立了執行緒,子執行緒沒有執行結束的時候主線程執行結束了,利用join又不能保證併發執行,目的是主線程等待其子執行緒執行完成之後退出 實現 利用hook實現jvm的等待執行 業務執行緒 class customerthread implements runnable catch ...

java主線程等待所有子執行緒執行完畢在執行

用sleep方法,讓主線程睡眠一段時間,當然這個睡眠時間是主觀的時間,是我們自己定的,這個方法不推薦,但是在這裡還是寫一下,畢竟是解決方法 下面結合這個問題我介紹一些並發包裡非常有用的併發工具類 3.等待多執行緒完成的countdownlatch 4.同步屏障cyclicbarrier 寫到這裡大家...

java主線程等待所有子執行緒執行完畢在執行

用sleep方法,讓主線程睡眠一段時間,當然這個睡眠時間是主觀的時間,是我們自己定的,這個方法不推薦,但是在這裡還是寫一下,畢竟是解決方法 下面結合這個問題我介紹一些並發包裡非常有用的併發工具類 3.等待多執行緒完成的countdownlatch 4.同步屏障cyclicbarrier 寫到這裡大家...