zoukankan      html  css  js  c++  java
  • 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();
    	}
    }
    

     这样就实现了,主线程等待子线程结束后再执行。

  • 相关阅读:
    【BZOJ 2324】 [ZJOI2011]营救皮卡丘
    【BZOJ 2809】 [Apio2012]dispatching
    网络流小结
    复活
    终结
    11.7模拟赛
    codevs 2173 忠诚
    P3386 【模板】二分图匹配
    Leetcode 大部分是medium难度不怎么按顺序题解(上)
    ATP的新博客!
  • 原文地址:https://www.cnblogs.com/all88/p/3026373.html
Copyright © 2011-2022 走看看