今天有一個需求是:在一個方法中開啟了一個子線程來執行操作,返回值依賴於子線程的執行結果,這樣如果要返回正確的值,就需要開啟子線程后
主線程等待子線程,然后子線程執行結束后,主線程再繼續執行。
主線程等待子線程需要用到: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();
}
}
這樣就實現了,主線程等待子線程結束后再執行。
