更新時間:2022-03-04 來源:黑馬程序員 瀏覽量:

現(xiàn)實生活中經常能碰到“插隊”的情況,同樣,在Thread 類中也提供了一個join()方法來實現(xiàn)這個“功能”。當在某個線程中調用其他線程的join()方法時,調用的線程將被阻塞,直到被join()方法加入的線程執(zhí)行完成后它才會繼續(xù)運行。接下來通過一個案例來演示join()方法的使用,如下所示。
class EmergencyThread implements Runnable {
public void run() {
for (int i = 1; i < 6; i++) {
System.out.println(Thread.currentThread().getName()
+ "輸入:”+i);
}
}
}
public class Examplel0 {
public static void main(String[] args) throws InterruptedException {
//創(chuàng)建線程
Thread threadl = new Thread(new EmergencyThread(), "threadl");
threadl.start(); //開啟線程
for (inc i = 1; i < 6; i++) {
System.out.println(Thread.currentThread().getName() + ”輸入:” + i);
if (i == 2) {
threadl.join(); //調用join()方法
}
}
}
}運行結果如圖所示。
例10-10中,在main線程中開啟了一個線程thread1,這兩個線程會相互爭奪CPU使用權輸出語句。當main線程中的循環(huán)變量為2時,調用thread1線程的join()方法,這時,thread1線程就會“插隊”優(yōu)先執(zhí)行,并且整個程序執(zhí)行完畢后才會執(zhí)行其他線程。從運行結果可以看出,當main線程輸出2以后,thread1線程就開始執(zhí)行,直到執(zhí)行完畢,main線程才繼續(xù)執(zhí)行。
Thread類中除了提供一個無參數(shù)的線程插隊join()方法外,還提供了帶有時間參數(shù)的線程插隊方法join(long millis)。當執(zhí)行帶有時間參數(shù)的join(long millis)進行線程插隊時,必須等待插入的線程指定時間過后才會繼續(xù)執(zhí)行其他線程。
1024首播|39歲程序員逆襲記:不被年齡定義,AI浪潮里再迎春天
2025-10-241024程序員節(jié)丨10年同行,致敬用代碼改變世界的你
2025-10-24【AI設計】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設計連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運營】深圳跨境電商運營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達13500元
2025-09-19【AI運維】鄭州運維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19