1. 程式人生 > >【Java】執行緒join方法

【Java】執行緒join方法

join是java多執行緒的裡的方法。它的作用是什麼?

java中的任意程式碼段,都可能會被任意的執行緒執行。程式碼段中可以是任意的程式碼,比如,啟動了一個執行緒。如果是這種情況,就可以用join方法了。

假設當前程式碼段A啟動了執行緒t,執行當前的程式碼的執行緒假定為a,如果此時帶碼段A中寫有對t呼叫join的程式碼,那麼意味著,當前的執行緒不能執行結束,必須等待t執行緒結束才可以結束,換句話說join起的作用是一種同步,讓當前執行緒等待另一個開啟的執行緒的結束。

例子:

package ThreadTest;
class Code{
	public void test(){
		System.out.println("test() starts");
		try {
			Thread.sleep(10000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("test() end");
	}
}
public class Case4 {

	public static void main(String[] args) {
		Code c = new Code();
		Thread t = new Thread(new Runnable(){

			@Override
			public void run() {
				c.test();
			}});
		t.start();
		try {
			t.join();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		System.out.println("我一定在test之後出現");
	}

}


可以看到,code裡面的程式碼執行了10秒,那麼main可定是先結束。但是main的最後一句是在test之後出現,說明main執行緒等待t執行緒結束才結束的。

相關推薦

Java執行join方法

join是java多執行緒的裡的方法。它的作用是什麼? java中的任意程式碼段,都可能會被任意的執行緒執行。程式碼段中可以是任意的程式碼,比如,啟動了一個執行緒。如果是這種情況,就可以用join方法了。 假設當前程式碼段A啟動了執行緒t,執行當前的程式碼的執行緒假定為a,

Java執行池ThreadPoolExecutor實現原理

引言 執行緒池:可以理解為緩衝區,由於頻繁的建立銷燬執行緒會帶來一定的成本,可以預先建立但不立即銷燬,以共享方式為別人提供服務,一來可以提供效率,再者可以控制執行緒無線擴張。合理利用執行緒池能夠帶來三個好處: 降低資源消耗。通過重複利用已建立的執行緒降低執行緒建立和銷燬造

JAVA執行建立和匿名內部類

前言 看多執行緒時,發現一些匿名內部類的東西,然後就來總結一下。   1.繼承Thread類 在類上實現匿名內部類 public class Demo1 { public static void main(String[] args) { Thread t = new T

Java執行安全的單例模式----靜態內部類

單例模式作為一種常見的設計模式,在程式中非常常見,主要是為了保證一個類只有一個唯一的物件。 從簡單的“餓漢式”、“懶漢式”→利用 synchronized 和 複雜的“雙重校驗DCL模式”,是一個考慮執行緒安全的過程(其實靜態的餓漢式單例模式也是執行緒安全的,

JAVA執行 join() 方法詳解及應用場景

在某些情況下,主執行緒建立並啟動了子執行緒,如果子執行緒中需要進行大量的耗時運算,主執行緒往往將早於子執行緒結束之前結束,如果主執行緒想等待子執行緒執行完畢後,獲得子執行緒中的處理完的某個資料,就要用

java執行join方法

       在某些情況下,主執行緒建立並啟動了子執行緒,如果子執行緒中需要進行大量的耗時運算,主執行緒往往將早於子執行緒結束之前結束,如果主執行緒想等待子執行緒執行完畢後,獲得子執行緒中的處理完的某個

Java執行

概念 執行緒池好處 降低資源消耗:重複利用執行緒,從而降低建立和銷燬造成的消耗 提高響應速度:任務到達時,可以不需要等到執行緒建立就能立即執行 提高執行緒的可管理性:執行緒會耗盡資源,降低穩定性,執行緒池可以統一分配、調優、監控 執行緒池組成

java執行-join方法詳解(附面試題)

本文對java Thread中join()方法進行介紹,join()的作用是讓“主執行緒”等待“子執行緒”結束之後才能繼續執行,大家參考使用吧 本章涉及到的內容包括: 1. join()

java執行的建立與使用

一、執行緒的簡介執行緒是程式執行流的最小單元,一個程序可以包括多個執行緒,各個執行緒之間可以並行,也可以互相影響。每一個程序都至少有一個執行緒。二、建立並使用執行緒在java中,執行緒(Thread)是繼承自Object,在java.lang.Thread中被宣告。想要使用程

Java執行的建立方式

  1、繼承Thread類方式 這種方式適用於執行特定任務,並且需要獲取處理後的資料的場景。 舉例:一個用於累加陣列內資料的和的執行緒。 public class AdditionThread extends Thread { private int sum = 0; priva

Java執行併發總結Thread類的常用方法(join、yield等)---執行的基礎操作篇

 啟動(start)   最基本的操作,呼叫Runnable中的run方法,無返回值。 new Thread(new Test()).start(); 休眠(sleep)  使當前執行緒休眠一段時間,預設為毫秒級,最高可以精確到納秒,呼叫的方法為slee

java執行執行常用操作方法總結

文章目錄 執行緒的命名與獲取 執行緒休眠 執行緒中斷 執行緒強制執行 執行緒禮讓 執行緒優先順序 多執行緒的主要操作方法都在Thread類中定義了。 執行緒的

Java執行 join和interrupt 方法

簡述: 使用Java多執行緒中join和interrupt函式 《Java程式設計思想》 P669 ~ P670 一個執行緒可以再其他執行緒上呼叫join()方法,其效果是等待一段時間直到第二個執行緒結束才繼續執行。 如果某個執行緒在另一個執行緒t上呼叫t.join(), 此

Java執行執行狀態、執行池狀態

執行緒狀態:     執行緒共包括以下5種狀態。1. 新建狀態(New)  執行緒物件被建立後,就進入了新建狀態。例如,Thread thread = new Thread()。2. 就緒狀態(Runnable)  也被稱為“可執行狀態”。執行緒物件被建立後,

Java執行ReentrantReadWriteLock

概述   ReentrantReadWriteLock是Lock的另一種實現方式,ReentrantLock是一個排他鎖,同一時間只允許一個執行緒訪問,而ReentrantReadWriteLock允許多個讀執行緒同時訪問,但不允許寫執行緒和讀執行緒、寫執行緒和寫執行緒同時訪問。相對於排他鎖,提高了併發性。

JAVA執行問題之死鎖

  一、死鎖是什麼? 舉個例子:兩個人一起吃飯,每個人都拿了一隻筷子,雙方都在等待對方將筷子讓給自己,結果兩個人都吃不了飯。這種情況和計算機中的死鎖情況很相似。 假設有兩個執行緒,互相等待對方釋放佔有的鎖,但是釋放鎖的條件又不可能形成,這時候死鎖就形成了。 還是買票的問題,有的時候時會發生死

Java執行程式設計核心技術第一章(多執行技能suspend,resume,yield)

1.8 暫停執行緒      在多執行緒中,suspend是暫停執行緒,resume是恢復執行緒的執行.  1.8.1suspend方法和resume方法的使用 public class MyThread extends Thread { private lon

Java執行程式設計核心技術第一章(多執行技能 執行的優先順序)

1.8 執行緒的優先順序  在作業系統中,執行緒可以劃分優先順序,優先順序較高的執行緒得到的cpu的資源較多,也就是cpu優先執行優先順序較高的執行緒物件中的任務.  在Java中,執行緒優先順序分為1~10個等級,如果小於1大於10,則JDK丟擲異常,原始碼如下:

JAVA執行如何解決一個生產者與消費者問題

                             如何解決一個生產者與消費者問題 生產者與消費者問題是多執行緒同步的一個經典問題。生產者和消費者同時使用一塊緩衝區,生產者生產商品放入緩衝區,消費者從緩衝區中取出商品。我們需要保證的是,當緩衝區滿時,生產者不可生產商品

輸出三角形 Java執行

題目: 利用多執行緒輸出兩個三角形,要求控制兩個執行緒的發生,判斷第一個執行緒是否結束。 並且在第一個執行緒沒結束時,使用 sleep 方法或者 join 方法。 1、sleep 方法。 public class Main { public static