一、概述
Java中的多线程机制允许多个线程在同一时间执行不同的任务,以提高程序的效率。而join方法是Java多线程提供的一种同步机制,用于控制各个线程之间的执行顺序。
二、join 方法的作用
当多个线程并发执行时,可以使用join方法让某个线程等待另外一个线程的结束。
public void join() throws InterruptedException; public void join(long millis) throws InterruptedException; public void join(long millis, int nanos) throws InterruptedException;
join方法可以带有参数,线程会等待参数时间后继续执行,如果参数为0,则表示要等待该线程执行完成;
三、示例代码
使用线程池执行两个线程,第二个线程中调用第一个线程的join方法,通过join方法让第二个线程等第一个线程执行完毕后再执行。
public class JoinDemo { public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(2); executorService.submit(new Runnable() { @Override public void run() { System.out.println("线程1开始执行"); try { Thread.sleep(5000L); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("线程1执行完毕"); } }); executorService.submit(new Runnable() { @Override public void run() { System.out.println("线程2开始执行"); try { Thread.sleep(1000L); } catch (InterruptedException e) { e.printStackTrace(); } Thread thread = Thread.currentThread(); try { thread.join(); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("线程2执行完毕"); } }); executorService.shutdown(); } }
运行结果:
线程1开始执行 线程2开始执行 线程1执行完毕 线程2执行完毕
四、应用场景
join方法主要应用场景是,需要等待某个线程执行完毕后,才能继续执行下一步操作,或者需要多个线程协同处理某个任务,而线程之间的执行顺序是比较关键的。
五、总结
join方法是Java多线程提供的一种同步机制,用于控制各个线程之间的执行顺序。可以让某个线程等待另外一个线程的结束,可以应用于多个线程协同处理某个任务的场景中。在使用中要注意参数的设置,参数为0时,表示要等待该线程执行完成。