1. 程式人生 > >java多執行緒join方法

java多執行緒join方法

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

public class Join {
    public static void main(String[] args) throws Exception {  
       Thread t1 = new Thread(new MyThread("t1"));
       t1.start();
       t1.join();
       for (int i = 0; i < 10; i++) {
           System.out.println("我是主執行緒");
       }
    }  
}
class MyThread implements Runnable{
    private String name;
    public MyThread(String name){
     this.name = name;   
    }
    @Override
    public void run() {
        try {
            Thread.sleep(3000);
            for (int i = 0; i < 10; i++) {
                System.out.println(name + "子執行緒執行   " + i);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    

}

執行結果:

t1子執行緒執行   0
t1子執行緒執行   1
t1子執行緒執行   2
t1子執行緒執行   3
t1子執行緒執行   4
t1子執行緒執行   5
t1子執行緒執行   6
t1子執行緒執行   7
t1子執行緒執行   8
t1子執行緒執行   9
我是主執行緒
我是主執行緒
我是主執行緒
我是主執行緒
我是主執行緒
我是主執行緒
我是主執行緒
我是主執行緒
我是主執行緒

我是主執行緒

join使得執行緒執行能夠按照既定的順序執行,比如 t2在t1執行完以後再執行

相關推薦

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

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

java執行join方法

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

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

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

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

執行學習(4):三種實現Java執行方法:Thread、Callable和Runable 的比較與區別

2018年10月03日 目錄 前言 前言 JVM允許應用程式併發執行多執行緒:最常用的是兩個方法:(1)基礎Thread類,重寫run()方法;(2)或實現Runnable 介面,實現介面的run()方法;(3)另外一種方法是:實現callable 介面

Java執行 join() run()

join(): 相當於立刻開一個執行緒執行,並且沒結束前呼叫他的程序(主執行緒)是不能繼續跑的,必須等該執行緒執行完。 並且,如果執行緒沒有start直接用join,不執行的。 public static void main(String[] args) thr

python執行join方法導致不能接收訊號

今天寫一個小工具,開啟多個執行緒,在子執行緒裡迴圈執行任務,發現不能退出程式,然後折騰了半天,還是退出不了,最後發現,原來是個bug 先上簡化了的程式碼: import sys import threading import signal import time c

Java執行join方法

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

執行-join方法(主執行等待子執行執行完畢)

多執行緒中的join方法 join主要的作用就是讓主執行緒 等待 子執行緒 執行完畢之後,才讓主執行緒繼續執行。 話不多說,直接看程式碼例子就好。 父執行緒 package com.luoy.Thread.join; public class Fa

Java 執行 yield方法

yield()方法 理論上,yield意味著放手,放棄,投降。一個呼叫yield()方法的執行緒告訴虛擬機器它樂意讓其他執行緒佔用自己的位置。這表明該執行緒沒有在做一些緊急的事情。注意,這僅是一個暗示,並不能保證不會產生任何影響。 在Thread.java中yield()定

Java執行join()方法

概要 本章,會對Thread中join()方法進行介紹。涉及到的內容包括: 1. join()介紹 2. join()原始碼分析(基於JDK1.7.0_40) 3. join()示例 來源:http://www.cnblogs.com/skywang12345/p/34792

白話理解java執行join()方法

join字面意思是加入,我理解為插隊. 舉例:媽媽在炒菜,發現沒喲醬油了,讓兒子去打醬油,兒子打完醬油,媽媽炒完菜,全家一起吃 package cn.yh.thread01; /** * * 打醬油的例子 */ public class Demo03 { public stat

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

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

白話理解java執行join()方法

join字面意思是加入,我理解為插隊. 舉例:媽媽在炒菜,發現沒喲醬油了,讓兒子去打醬油,兒子打完醬油,媽媽炒完菜,全家一起吃 package cn.yh.thread01; /** * *

Java執行初探——yield()方法join()方法

一、執行緒與程序 1、程序是程式(任務)執行過程,持有資源(共享記憶體,共享檔案)和執行緒,程序是動態性的,如果程式沒有執行就不算一個程序。 2、執行緒是系統中最小的執行單元,同一程序中有多個執行緒,執行緒共享程序的資源 Java中建立現成的方式就不再贅述了,有兩種:(1

Java執行程式設計核心技術之方法join的使用

使用場景                 在很多情況下,主執行緒建立並啟動子執行緒,如果子執行緒中要進行大量的耗時運算,主執行緒往往將早於子執行緒結束之前結束,這時,如果主執行緒向等待子執行緒執行完成後

java執行---順序列印ABC的三種實現---join方法

使用join方法,讓三個執行緒之間存在等待關係 程式碼如下: package com.zcj.join; public class JoinTest { public static voi

JAVA執行join()方法的詳細分析

雖然關於討論執行緒join()方法的部落格已經非常極其特別多了,但是前幾天我有一個困惑卻沒有能夠得到詳細解釋,就是當系統中正在執行多個執行緒時,join()到底是暫停了哪些執行緒,大部分部落格給的例子看起來都像是t.join()方法會使所有執行緒都暫停並等待t的執行完畢。當然

Java執行join方法的理解

[CustomThread1] Thread start.      //執行緒CustomThread1起動 [CustomThread1] Thread loop at 0   //執行緒CustomThread1執行 [CustomThread1] Thread loop at 1   //執行緒Cu