关于java调用linux shell 的问题
2013-12-03 20:06
183 查看
问题的提出:
shell脚本要做离线的数据处理任务
java调用脚本,将这种处理任务封装成webservice
特点:
shell处理单个时间长
每次要处理文件量大
这里目前只做调用分析:
原来的:
View Code
实验结果:
同时处理100条语音。
第一个用时50min。
第二个用时25min。
优势:
使用processbuild 构造基于os的进程
使用process作为类变量并且使用volatile来进行描述
shell脚本要做离线的数据处理任务
java调用脚本,将这种处理任务封装成webservice
特点:
shell处理单个时间长
每次要处理文件量大
这里目前只做调用分析:
原来的:
//变为成员变量方式 protected volatile Process process; private void runShell(String cmd) { try { logger.info("the command " + cmd); // create a process for the shell ProcessBuilder pb = new ProcessBuilder("bash", "-c", cmd); process = pb.start(); final InputStream inputStream = process.getInputStream(); final InputStream errorStream = process.getErrorStream(); new Thread(new Runnable() { @Override public void run() { try{ BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream)); String line; while((line=reader.readLine())!=null){ // logConsole(line); logger.debug(line); } }catch(Exception e){ // log(e); e.printStackTrace(); logger.debug("接收日志出错,推出日志接收"); } } },"one").start(); new Thread(new Runnable() { @Override public void run() { try { BufferedReader reader=new BufferedReader(new InputStreamReader(errorStream)); String line; while((line=reader.readLine())!=null){ // logConsole(line); logger.debug(line); } } catch (Exception e) { // log(e); e.printStackTrace(); logger.debug("接收日志出错,推出日志接收"); } } },"error").start(); // InputStream shellIn = process.getInputStream(); // this captures the output from the command int shellExitStatus = 0; try { //等待程序结果 shellExitStatus = process.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); }finally{ process=null; } } catch (IOException ignoreMe) { ignoreMe.printStackTrace(); } }
View Code
实验结果:
同时处理100条语音。
第一个用时50min。
第二个用时25min。
优势:
使用processbuild 构造基于os的进程
使用process作为类变量并且使用volatile来进行描述
相关文章推荐
- 关于JAVA调用Matlab遇到的问题+JDK重装后原有项目报错的解决办法
- JAVA中关于主方法调用非静态方法的问题
- java中关于子类实例化时调用父类无参构造方法的问题
- 关于Java中使用hessian-3.0.20调用远程服务连接出错异常try catch无法捕捉的问题处理
- jni关于从java端调用C++的问题
- 关于JS调用Java后台API跨域问题的解决方法
- 关于java使用jacob调用word,ppt,excel等的转化为html的问题
- 关于java调用webservice参数传递为空问题
- linux shell 调用 java 在终端显示消息问题
- 关于 "java 如何调用Oracle存储过程中的动态refcursor结果集" 问题
- java.security.cert.CertificateException: Selenium 自动化的时候调用API 执行操作引起的关于https的问题
- 关于Java中静态方法与非静态方法之间的互相调用问题
- java 中关于子类调用父类构造函数问题
- 关于Java调用批处理命令向mysql导入数据的中文乱码有关问题
- 关于在java环境下调用 .net的 webservice无法获取参数的问题
- 关于java的多态方法调用顺序的问题
- 关于java调用mysqldump的问题
- 关于java中Axis2客户端调用C#webservice服务端包含Cookie问题
- 关于Java调用32/64位dll的问题
- android关于提示R.java调用错误问题