在Java中,join()
和sleep()
方法都是用于線程控制的,但它們的功能和用途有所不同。
join()
方法:
join()
方法屬于Thread
類,用于等待一個線程完成(終止)后,才繼續執行當前線程。當在一個線程中調用另一個線程的join()
方法時,當前線程會被阻塞,直到被調用線程完成執行。這樣可以確保線程按照特定的順序執行。例如,你可能希望在主線程中等待其他線程完成任務,然后再繼續執行主線程的后續代碼。示例:
public class JoinExample {
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(() -> {
System.out.println("子線程開始執行...");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("子線程結束執行...");
});
thread.start();
System.out.println("等待子線程執行完成...");
thread.join(); // 主線程等待子線程執行完成
System.out.println("子線程已執行完成,主線程繼續執行...");
}
}
sleep()
方法:
sleep()
方法也屬于Thread
類,用于讓當前線程暫停執行指定的毫秒數。在暫停期間,線程不會占用CPU資源。sleep()
方法常用于模擬某些需要等待的場景,如模擬網絡延遲、定時任務等。示例:
public class SleepExample {
public static void main(String[] args) {
System.out.println("線程開始執行...");
try {
Thread.sleep(2000); // 線程暫停2秒
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("線程繼續執行...");
}
}
總結:
join()
方法用于等待一個線程完成后,再繼續執行當前線程。sleep()
方法用于讓當前線程暫停執行指定的毫秒數。