java中主線程等待所有子線程結束


今天有一個需求是:在一個方法中開啟了一個子線程來執行操作,返回值依賴於子線程的執行結果,這樣如果要返回正確的值,就需要開啟子線程后

主線程等待子線程,然后子線程執行結束后,主線程再繼續執行。

主線程等待子線程需要用到: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();
	}
}

 這樣就實現了,主線程等待子線程結束后再執行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM