常用函数说明
①sleep(long millis): 在指定的毫秒數內讓當前正在執行的線程休眠(暫停執行)②join():指等待t線程終止。join是Thread類的一個方法,啟動線程后直接調用,即join()的作用是:“等待該線程終止”,這里需要理解的
就是該線程是指的主線程等待子線程的終止。也就是在子線程調用了join()方法后面的代碼,只有等到子線程
結束了才能執行。Thread t = new AThread(); t.start(); t.join();
為什么要用join()方法在很多情況下,主線程生成并起動了子線程,如果子線程里要進行大量的耗時的運算,主線程往往將于子線程
之前結束,但是如果主線程處理完其他的事務后,需要用到子線程的處理結果,也就是主線程需要等待子線程
執行完成之后再結束,這個時候就要用到join()方法了。
不加join。package com.multithread.learning;/*** 多線程學習,join* @author Leon.Sun**/
public class Thread1 extends Thread {private String name;public Thread1(String name) {this.name = name;}@Overridepublic void run() {System.out.println(Thread.currentThread().getName() + " 線程運行開始!");for(int i=0;i<5;i++) {System.out.println("子線程" + name + "運行 : " + i);try {sleep((int)Math.random()*10);} catch (InterruptedException e) {e.printStackTrace();}} System.out.println(Thread.currentThread().getName() + " 線程運行結束!");}public static void main(String[] args) {System.out.println(Thread.currentThread().getName() + "主線程運行開始!");Thread1 m1 = new Thread1("A");Thread1 m2 = new Thread1("B");m1.start();m2.start();System.out.println(Thread.currentThread().getName() + "主線程運行結束!");}
}
輸出結果:main主線程運行開始!
main主線程運行結束!
Thread-0 線程運行開始!
子線程A運行 : 0
Thread-1 線程運行開始!
子線程B運行 : 0
子線程B運行 : 1
子線程A運行 : 1
子線程B運行 : 2
子線程A運行 : 2
子線程B運行 : 3
子線程A運行 : 3
子線程B運行 : 4
子線程A運行 : 4
Thread-1 線程運行結束!
Thread-0 線程運行結束!發現主線程比子線程早結束
?
總結
- 上一篇: 实现java.lang.Runnable
- 下一篇: 设计模式------代理模式