7 Join方法
join方法的作用
假设在主线程中调用子线程的join方法,主线程会在join方法处等待子线程执行完之后,再继续进行下去。这个过程也就是一个同步的过程。
什么是同步
以调用方角度来讲,如果
同步:需要等待结果返回,才能继续运行就是同步
异步:不需要等待结果返回,就能继续运行就是异步
//案例代码 public class ThreadJoin { static int r = 0; public static void main(String[] args) throws InterruptedException { test(); } private static void test() throws InterruptedException { System.out.println("主线程开始执行"); Runnable task = new Runnable() { @Override public void run() { try { System.out.println("sub线程开始执行"); TimeUnit.SECONDS.sleep(1); r = 10; System.out.println("sub线程结束"); } catch (InterruptedException e) { e.printStackTrace(); } } }; Thread t1 = new Thread(task,"t1"); t1.start(); //调用Thread中的join()方法,该方法在这里会使得主线程等待子线程结束后,再继续执行 t1.join(); System.out.println("r="+r); System.out.println("主线程结束执行"); } }
结果:
主线程开始执行
sub线程开始执行
sub线程结束
r=10
主线程结束执行