join()方法的使用

/ 多线程 / 没有评论 / 298浏览

在多线程开发中常常遇到了一个问题就是希望某一个线程在执行完毕后在执行主线程。在Java中通常用join()方法来实现需求。join()方法的目的是所属的线程正常运行run()方法中的逻辑,当前线程无限期阻塞,也就是说一直等待所属线程执行完,当前线程才会执行,底层实现原理是调用了wait()方法。

/**
* 管理用户请求
*
* @author Sama
* @author admin@jilinwula.com
* @date 2017-03-15 10:44
* @since 1.0.0
*/
public class RequestAdmin extends Thread {

@Override
public void run() {
try {
System.out.println("任务执行开始");
Thread.sleep(1000);
System.out.println("任务执行结束");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
/**
* 测试类
*
* @author Sama
* @author admin@jilinwula.com
* @date 2017-03-15 10:49
* @since 1.0.0
*/
public class RequestRun {
public static void main(String[] args) throws InterruptedException {
RequestAdmin requestAdmin = new RequestAdmin();
requestAdmin.start();
System.out.println("主任务执行");
}
}
主任务执行
任务执行开始
任务执行结束

我们看主任务先执行了,然后才执行的是子任务。这时我们调用join()方法,就可以实现先执行子任务在执行主任务的需求了。

/**
* 测试类
*
* @author Sama
* @author admin@jilinwula.com
* @date 2017-03-15 10:49
* @since 1.0.0
*/
public class RequestRun {
public static void main(String[] args) throws InterruptedException {
RequestAdmin requestAdmin = new RequestAdmin();
requestAdmin.start();
requestAdmin.join();
System.out.println("主任务执行");
}
}
任务执行开始
任务执行结束
主任务执行

我们看实现了我们想要的逻辑。但在使用join()方法是还要有几点注意的地方: