在Java中,可以使用Thread.join()
方法來(lái)實(shí)現(xiàn)線程間的協(xié)作。join()
方法允許一個(gè)線程等待另一個(gè)線程完成執(zhí)行。這對(duì)于確保線程按照特定的順序執(zhí)行或者在線程間共享資源時(shí)非常有用。
以下是一個(gè)簡(jiǎn)單的示例,展示了如何使用join()
方法實(shí)現(xiàn)兩個(gè)線程間的協(xié)作:
public class JoinExample {
public static void main(String[] args) {
// 創(chuàng)建兩個(gè)線程
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Thread 1 is running.");
try {
// 讓線程1等待線程2完成
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread 1 is finished.");
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Thread 2 is running.");
// 讓線程2等待線程1完成
try {
thread1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Thread 2 is finished.");
}
});
// 啟動(dòng)線程
thread1.start();
thread2.start();
}
}
在這個(gè)示例中,我們創(chuàng)建了兩個(gè)線程thread1
和thread2
。每個(gè)線程都調(diào)用join()
方法,讓當(dāng)前線程等待另一個(gè)線程完成。然而,由于線程的執(zhí)行順序是不確定的,因此這個(gè)示例可能輸出以下結(jié)果之一:
Thread 1 is running.
Thread 2 is running.
Thread 1 is finished.
Thread 2 is finished.
或者
Thread 2 is running.
Thread 1 is running.
Thread 2 is finished.
Thread 1 is finished.
總之,join()
方法可以用于實(shí)現(xiàn)線程間的協(xié)作,確保線程按照特定的順序執(zhí)行。但請(qǐng)注意,線程的執(zhí)行順序仍然是不確定的,因?yàn)椴僮飨到y(tǒng)調(diào)度線程的方式是不確定的。