Java:当前线程运行完毕,再运行后续逻辑

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:29   2329   0

一、问题描述

在程序设计中,可能存在这样的情景:主线程中存在一个子线程,子线程需要在执行完毕后为后续代码逻辑提供参数。但在代码执行时,子进程还没执行完毕,后续的代码已经开始执行了,这时候就会出现参数为空的异常,或是直接报错。

 1 public class ThreadTest {
 2     public static void main(String[] args) {
 3         String str;
 4         Thread thread = null;
 5         thread = new Thread(new Runnable() {
 6             @Override
 7             public void run() {
 8                 while(true){
 9                     System.out.println("Thread is running...");
10                     break;
11                 }
12             }
13         });
14         thread.start();
15 
16         System.out.println("Thread is finished...");
17     }
18 }

执行结果:

因此,如何才能使得子进程执行完毕后才开始运行后续代码呢?

二、解决方法

1. join

Thread类提供了一个join( )方法,其原理是不断检查子进程是否执行完毕,当子进程未执行完成时,调用该子进程的进程被阻塞,直到子进程执行完毕后,再继续运行调用进程。

 1 public class ThreadTest {
 2     public static void main(String[] args) {
 3         String str;
 4         Thread thread = null;
 5         thread = new Thread(new Runnable() {
 6             @Override
 7             public void run() {
 8                 while(true){
 9                     System.out.println("Thread is running...");
10                     break;
11                 }
12             }
13         });
14         thread.start();
15         


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛