【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