线程池 Future 带返回结果

package com.aibi.cmdc.bigscreen.action;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

import com.aibi.cmdc.ws.WSConstans;
import com.aibi.cmdc.ws.WsUtil;
import com.sun.org.apache.bcel.internal.generic.NEW;



public class ThreadPool {

	public static  class MyCallable implements Callable{ 
        private String wsClassNmae; 
        private Map<String, String> params = null;
        private List<String> headCodes = null;
        MyCallable(String wsClassNmae,Map<String, String> params,List<String> headCodes) { 
             this.wsClassNmae = wsClassNmae; 
             this.params = params;
             this.headCodes = headCodes;
        } 

        @Override 
        public Object call() throws Exception { 
              return WsUtil.getData(wsClassNmae, params, headCodes, 0);
        } 
	}
	/**
	 * @param args
	 * @throws Exception 
	 * @throws InterruptedException 
	 */
	public static void main(String[] args) throws InterruptedException, Exception {
		
		ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);  
		 Map<String,String> params = new HashMap<String, String>();
		 params.put(WSConstans.params_month, "2015-09");
		 params.put(WSConstans.params_phoneType, "12170001");
		 List<String> headCodes = new ArrayList<String>();
		headCodes.add("provinceId");//省份公司
		headCodes.add("province");//省份公司
		headCodes.add("channelAlarm");//渠道覆盖率预警
		headCodes.add("channelBA");//渠道覆盖率
		headCodes.add("custormCount");//提货客户数
		headCodes.add("HisCustormCount");//历史提货客户数
		Callable c1 = new MyCallable(WSConstans.CLASS_NAME_WS00131 , params, headCodes);
		headCodes.clear();
		headCodes.add("provinceId");//省份公司
		headCodes.add("province");//省份公司
		headCodes.add("alarmValue");//提货占比预警
		headCodes.add("top10Value");//TOP10 占比
		headCodes.add("top5Value");//Top5占比
		Callable c2 = new MyCallable(WSConstans.CLASS_NAME_WS00132 , params, headCodes);
		headCodes.clear();
		headCodes.add("provinceId");//省份公司
		headCodes.add("province");//省份公司
		headCodes.add("alarmValue");//异常渠道客户预警
		headCodes.add("alarmCustorm");//异常客户数
		Callable c3 = new MyCallable(WSConstans.CLASS_NAME_WS00132 , params, headCodes);
		Future f1 = fixedThreadPool.submit(c1); 
		Future f2 = fixedThreadPool.submit(c2); 
		Future f3 = fixedThreadPool.submit(c3); 
		Object re1 = f1.get();
		Object re2 = f2.get();
		Object re3 = f3.get();
		System.out.println("1111111111");
		System.out.println(re1.toString());
		System.out.println("2222222222");
		System.out.println(re2.toString());	
		System.out.println("3333333");
		System.out.println(re3.toString());
	}

}

  

posted @ 2015-10-29 19:02  穿林度水  阅读(1453)  评论(0编辑  收藏  举报