在Java中,要控制线程的启动顺序,可以使用join()
方法等待一个线程完成,或使用其他同步机制(如CountDownLatch
)来确保线程按照特定的顺序执行。
使用join()
方法
在这个方法中,先启动t1
和t2
,然后在启动t3
之前,使用join()
方法等待t1
和t2
执行完毕。注意,这种方法实际上会让t1
和t2
依次执行完毕后才启动t3
,而不是完全并行。
@Test
void threadJoinExample() throws InterruptedException {
Thread t1 = new Thread(() -> {
System.out.println("thread t1 is running.");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
Thread t2 = new Thread(() -> {
System.out.println("thread t2 is running.");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
Thread t3 = new Thread(() -> {
System.out.println("thread t3 is running.");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
//先启动t1和t2
t1.start();
t2.start();
//等待t1和t2都执行完毕
t1.join();
t2.join();
//启动t3
t3.start();
}