程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 淺談Java多線程中的join方法,淺談java多線程join

淺談Java多線程中的join方法,淺談java多線程join

編輯:JAVA綜合教程

淺談Java多線程中的join方法,淺談java多線程join


先上代碼

新建一個Thread,代碼如下:

 1 package com.thread.test;
 2 
 3 public class MyThread extends Thread {
 4     private String name;
 5     public MyThread(String name) {
 6         this.name = name;
 7     }
 8     @Override
 9     public void run() {
10         for (int i = 0; i < 100; i++) {
11             System.out.println(name+"["+i+"]");
12         }
13         super.run();
14     }
15 }

之後新建測試類,代碼如下:

package com.thread.test;
/*
 * 0-50執行的是主線程,50-100執行的是A線程,並且將A線程完全執行完後才繼續執行主線程
 */
public class ThreadDemo{
    public static void main(String[] args) {
        MyThread t = new MyThread("A");
        t.start();
        for (int i = 0; i < 100; i++) {
            if (i>50) {
                try {
                    t.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("主線程"+"["+i+"]");
        }
    }
}

下面是Java Platform SE8 API中對Thread中Join方法的解釋:

public final void join(long millis)
                throws InterruptedExceptionWaits at most millis milliseconds for this thread to die. A timeout of 0 means to wait forever. 
This implementation uses a loop of this.wait calls conditioned on this.isAlive. As a thread terminates the this.notifyAll method is invoked. It is recommended that applications not use wait, notify, or notifyAll on Thread instances.

Parameters: 
millis - the time to wait in milliseconds 
Throws: 
IllegalArgumentException - if the value of millis is negative 
InterruptedException - if any thread has interrupted the current thread. The interrupted status of the current thread is cleared when this exception is thrown.

先上代碼

新建一個Thread,代碼如下:

 1 package com.thread.test;
 2 
 3 public class MyThread extends Thread {
 4     private String name;
 5     public MyThread(String name) {
 6         this.name = name;
 7     }
 8     @Override
 9     public void run() {
10         for (int i = 0; i < 100; i++) {
11             System.out.println(name+"["+i+"]");
12         }
13         super.run();
14     }
15 }

之後新建測試類,代碼如下:

package com.thread.test;
/*
 * 0-50執行的是主線程,50-100執行的是A線程,並且將A線程完全執行完後才繼續執行主線程
 */
public class ThreadDemo{
    public static void main(String[] args) {
        MyThread t = new MyThread("A");
        t.start();
        for (int i = 0; i < 100; i++) {
            if (i>50) {
                try {
                    t.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("主線程"+"["+i+"]");
        }
    }
}

下面是Java Platform SE8 API中對Thread中Join方法的解釋:

public final void join(long millis)
                throws InterruptedExceptionWaits at most millis milliseconds for this thread to die. A timeout of 0 means to wait forever. 
This implementation uses a loop of this.wait calls conditioned on this.isAlive. As a thread terminates the this.notifyAll method is invoked. It is recommended that applications not use wait, notify, or notifyAll on Thread instances.

Parameters: 
millis - the time to wait in milliseconds 
Throws: 
IllegalArgumentException - if the value of millis is negative 
InterruptedException - if any thread has interrupted the current thread. The interrupted status of the current thread is cleared when this exception is thrown.

 我自己的理解就是會強行進入使用join方法的線程,其他線程等待該線程完全執行完後才會進來。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved