Java 等待多個子執行緒 join
t.join(); //使呼叫執行緒 t 在此之前執行完畢。
t.join(1000); //等待 t 執行緒,等待時間是1000毫秒
要想主執行緒main等待若干執行緒結束之後再執行,需要先呼叫各個子執行緒的start()方法,在所有執行緒的start()方法執行完之後,再執行所有子執行緒的join()方法。若依次執行每個執行緒的start()和join()方法,則各個執行緒之間是同步的。舉例如下:
public class Test { public static void main(String[] args) { Thread cpuThread = new Thread(new Runnable(){ //執行緒1,去獲取cpu利用率 @Override public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("1 over"); } }); Thread memThread = new Thread(new Runnable(){ //執行緒2,去獲取mem利用率 @Override public void run() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("2 over"); } }); Thread netThread = new Thread(new Runnable(){ //執行緒3,去獲取net利用率 @Override public void run() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("3 over"); } }); try { cpuThread.start(); memThread.start(); netThread.start(); cpuThread.join(); memThread.join(); netThread.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("都結束了"); } }
參考:
相關推薦
Java 等待多個子執行緒 join
thread.Join把指定的執行緒加入到當前執行緒,可以將兩個交替執行的執行緒合併為順序執行的執行緒。比如線上程B中呼叫了執行緒A的Join()方法,直到執行緒A執行完畢後,才會繼續執行執行緒B。
主執行緒等待多個子執行緒執行完了在執行
CountDownLatch類位於java.util.concurrent包下,利用它可以實現類似計數器的功能。 程式碼如下: package Thread; import java.util.concurrent.CountDownLatch; /** * * @author Csh
netframework中等待多個子執行緒執行完畢並計算執行時間
本文主要描述在.netframework中(實驗環境.netframework版本為4.6.1)提供兩種方式等待多個子執行緒執行完畢。 ManualResetEvent 在多執行緒中,將ManualRe
java實現多個執行緒達到一個闕伐值後一起執行
給大家推薦個靠譜的公眾號程式設計師探索之路,大家一起加油 1. CountDownLatch 1.1 簡介 CountDownLatch是一個同步輔助類,通過它可以完成類似於阻塞當前執行緒的功能,即:一個執行緒或多個執行緒一直等待,直到其他執行緒執行的操作完成。CountDownLatch用
Java實現多個執行緒之間的管理 --- CountDownLatch
wechat:812716131 ------------------------------------------------------ 技術交流群請聯絡上面wechat ----------------------------------------------
java(多)執行緒中注入Spring的Bean
問題描述 專案中很多地方都用到了非同步方式或多執行緒,也就是開啟新執行緒處理一些業務。在新執行緒中,用spring註解@Autowire注入Bean會丟擲nullPointerException,也就是Spring Bean沒有被注入,bean物件的值
java開啟多個執行緒,執行完成後再執行主執行緒
博主昨天去一家公司面試,被面試官問到一個問題,如果開啟10個執行緒,但是需要這10個執行緒都執行完成後,再交由主執行緒統一輸入,如何實現?當時我沒有回答,我對多執行緒並不是那麼的熟悉,面試結束後,我通過查閱資料找到了解決方案,下面我貼出程式碼: i
Java 多執行緒 join和interrupt 方法
簡述: 使用Java多執行緒中join和interrupt函式 《Java程式設計思想》 P669 ~ P670 一個執行緒可以再其他執行緒上呼叫join()方法,其效果是等待一段時間直到第二個執行緒結束才繼續執行。 如果某個執行緒在另一個執行緒t上呼叫t.join(), 此
Java多執行緒join()
原文出處http://www.cnblogs.com/skywang12345/p/3479275.html join( )的作用:讓“主執行緒”等待“子執行緒”結束之後才能繼續執行。這句話可能有點晦澀,我們還是通過例子去理解 // 主執行緒 public class Father e
python中多執行緒開啟的兩種方式(內含有event的應用,即安全的機制,類似於java的等待喚醒機制,不會出現多個執行緒之間的錯亂問題)
event是類似於java中的等待喚醒機制,具體方法參照上一篇CSDN 下面來介紹開啟執行緒的第一種方式 #Filename:threading1.py #開啟執行緒的第一種方式 import threading import time event=threadin
Java實現主執行緒等待子執行緒join,CountDownLatch
本文介紹兩種主執行緒等待子執行緒的實現方式,以5個子執行緒來說明: 1、使用Thread的join()方法,join()方法會阻塞主執行緒繼續向下執行。 2、使用Java.util.concurrent中的CountDownLatch,是一個倒數計數器。初始化時先設定
Java多執行緒 join() run()
join(): 相當於立刻開一個執行緒執行,並且沒結束前呼叫他的程序(主執行緒)是不能繼續跑的,必須等該執行緒執行完。 並且,如果執行緒沒有start直接用join,不執行的。 public static void main(String[] args) thr
JAVA多執行緒 join() 方法詳解及應用場景
在某些情況下,主執行緒建立並啟動了子執行緒,如果子執行緒中需要進行大量的耗時運算,主執行緒往往將早於子執行緒結束之前結束,如果主執行緒想等待子執行緒執行完畢後,獲得子執行緒中的處理完的某個資料,就要用
java多執行緒join方法
在某些情況下,主執行緒建立並啟動了子執行緒,如果子執行緒中需要進行大量的耗時運算,主執行緒往往將早於子執行緒結束之前結束,如果主執行緒想等待子執行緒執行完畢後,獲得子執行緒中的處理完的某個
[Java][Android] 多執行緒同步-主執行緒等待所有子執行緒完成案例
有時候我們會遇到這樣的問題:做一個大的事情可以被分解為做一系列相似的小的事情,而小的事情無非就是引數上有可能不相同而已! 此時,如果不使用執行緒,我們勢必會浪費非常多的時間來完成整個大的事情,而使用執行緒的話將會存在這樣的問題: 主執行緒啟動所有子執行緒併發執行後主執行緒就
多執行緒-join方法(主執行緒等待子執行緒執行完畢)
多執行緒中的join方法 join主要的作用就是讓主執行緒 等待 子執行緒 執行完畢之後,才讓主執行緒繼續執行。 話不多說,直接看程式碼例子就好。 父執行緒 package com.luoy.Thread.join; public class Fa
java多執行緒-join方法詳解(附面試題)
本文對java Thread中join()方法進行介紹,join()的作用是讓“主執行緒”等待“子執行緒”結束之後才能繼續執行,大家參考使用吧 本章涉及到的內容包括: 1. join()
多執行緒之join()方法---(Thread提供的讓一個執行緒等待另一個執行緒完成的方法)
package Demo1; /** * Created by Petty on 2017/4/9. */ public class Thread_1 extends Thread {
Java併發程式設計之執行緒生命週期、守護執行緒、優先順序和join、sleep、yield
Java併發程式設計中,其中一個難點是對執行緒生命週期的理解,和多種執行緒控制方法、執行緒溝通方法的靈活運用。這些方法和概念之間彼此聯絡緊密,共同構成了Java併發程式設計基石之一。 Java執行緒的生命週期 Java執行緒類定義了New、Runnable、Running Man、Blocked和Dead
Java CompletableFuture:allOf等待所有非同步執行緒任務結束
private void method() throws ExecutionException, InterruptedException { CompletableFuture<String> f1 = CompletableFuture.supplyAsync(()