1 ThreadPoolExecutor pool= new ThreadPoolExecutor(5,10, 3, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()); 2 IbcServiceConstants ibcServiceConstants=CfwConstants.ctx.getBean(IbcServiceConstants.class); 3 String userPath=ibcServiceConstants.getUserLoginLogDir()+statDate.substring(0, 4)+"/"+statDate.substring(4, 6)+"/"+statDate; 4 String accountPath=ibcServiceConstants.getAccountLoginLogDir()+statDate.substring(0, 4)+"/"+statDate.substring(4, 6)+"/"+statDate; 5 String memberPath=ibcServiceConstants.getMemberLoginLogDir()+statDate.substring(0, 4)+"/"+statDate.substring(4, 6)+"/"+statDate; 6 String shellPath=ibcServiceConstants.getHiveShellPath(); 7 8 pool.execute(new RunShellThread(shellPath, userPath, "loginuser",statDate)); 9 log.info(" run load loginuser data shellPath:= "+shellPath+" ,userPath:= "+userPath); 10 11 pool.execute(new RunShellThread(shellPath, accountPath, "loginAccount",statDate)); 12 log.info(" run load loginaccount data shellPath:= "+shellPath+" ,accountPath:= "+accountPath); 13 14 pool.execute(new RunShellThread(shellPath, memberPath, "loginmember",statDate)); 15 log.info(" run load loginmember data shellPath:= "+shellPath+" ,memberPath:= "+memberPath); 16 17 pool.shutdown(); 18 while(true){ 19 try { 20 if(pool.isTerminated()){ 21 BigDataTask bigDataTask=CfwConstants.ctx.getBean(BigDataTask.class); 22 bigDataTask.save(statDate); 23 break; 24 } 25 try { 26 Thread.sleep(1000l); 27 } catch (InterruptedException e) { 28 log.error(" pool error ", e); 29 } 30 } catch (Exception e) { 31 log.error(" pool aa error ", e); 32 } 33 } 34 }
//spring注解给属性付初始值
@Value("${hive.load.data.shell}")
public void setHiveShellPath(String hiveShellPath) {
this.hiveShellPath = hiveShellPath;
}
public String getMemberLoginLogDir() {
return memberLoginLogDir;
}
@Value("${memberlogin.log.hadoop.dir}")
public void setMemberLoginLogDir(String memberLoginLogDir) {
this.memberLoginLogDir = memberLoginLogDir;
}
另一种方法 https://blog.csdn.net/jiaomicha/article/details/40539523