在线程执行过程中可能会存在一个问题,如下所示:在线程中我们更新了线程对象value的值,因为线程是异步执行的,还未等到线程执行完毕,main函数就输出了value值,此时value的值为null。那么我们如何才能让main函数能够在线程完成后再输出更新后的value值呢??
方式1:主线程等待法
方式2:使用Thread类的join()阻塞当前线程以等待子线程处理完毕
join方法
作用:让调用该方法的线程在执行完run()方法后,再执行join方法后面的代码。将两个线程合并,用于实现同步功能。通过A.join()方法来等待线程A的结束,才运行join下面的代码。
方式3:通过Callable接口实现线程:通过FutureTask Or 线程池获取
继承Callable接口实现的线程类,在线程执行时执行类中的call()方法,该方法具有返回值