今天有一个需求是:在一个方法中开启了一个子线程来执行操作,返回值依赖于子线程的执行结果,这样如果要返回正确的值,就需要开启子线程后
主线程等待子线程,然后子线程执行结束后,主线程再继续执行。
主线程等待子线程需要用到:CountDownLatch
直接上代码:
public boolean isUpdateResource() { CountDownLatch cdl=new CountDownLatch(1);//这里的数字,开启几个线程就写几 new MyThread(cdl).start(); try { cdl.await();//主线程等待子线程执行 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(result!="0"){ isUpdateResource=true; resurseUrl=result; } return isUpdateResource; }
创建一个Thread类
public class MyThread extends Thread{ private CountDownLatch cdl; public MyThread(CountDownLatch cdl){ this.cdl=cdl; } @Override public void run() { // TODO Auto-generated method stub super.run(); result = connectServer(serverUrl); cdl.countDown(); }}
这样就实现了,主线程等待子线程结束后再执行。