• 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();
    	}
    }
    

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

  • 相关阅读:
    Notepadd ++ PluginManager安装
    Srping cloud Ribbon 自定义负载均衡
    Spring cloud Eureka 和 Zookeeper 比较
    Spring cloud info信息显示
    kafka 在Windows端安装 找不到或无法加载主类 的解决方案
    Linux kafka 单机安装
    mina
    @bzoj
    @51nod
    @topcoder
  • 原文地址:https://www.cnblogs.com/all88/p/3026373.html
Copyright © 2020-2023  润新知