在Java中,可以使用Thread.join()
方法来实现线程间的协作。join()
方法允许一个线程等待另一个线程完成执行。这对于确保线程按照特定的顺序执行或者在线程间共享资源时非常有用。
以下是一个简单的示例,展示了如何使用join()
方法实现两个线程间的协作:
public class JoinExample {
public static void main(String[] args) {
// 创建两个线程
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.");
}
});
// 启动线程
thread1.start();
thread2.start();
}
}
在这个示例中,我们创建了两个线程thread1
和thread2
。每个线程都调用join()
方法,让当前线程等待另一个线程完成。然而,由于线程的执行顺序是不确定的,因此这个示例可能输出以下结果之一:
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()
方法可以用于实现线程间的协作,确保线程按照特定的顺序执行。但请注意,线程的执行顺序仍然是不确定的,因为操作系统调度线程的方式是不确定的。