1. 程式人生 > >Java 等待多個子執行緒 join

Java 等待多個子執行緒 join

thread.Join把指定的執行緒加入到當前執行緒,可以將兩個交替執行的執行緒合併為順序執行的執行緒。比如線上程B中呼叫了執行緒A的Join()方法,直到執行緒A執行完畢後,才會繼續執行執行緒B。

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(()