返回

提问 添加收藏

Java通过runtime批量执行cmd命令,到readline那里就卡很长时间

啵溜啵溜neal 发布于 2019年07月12日 (共有1个回帖)

        代码能够正常运行,但是批量处理数据的时候,会消耗很长时间.开始我以为是我调用命令有问题,但是经过调试,发现每次代码运行到readline方法的时候,程序就会卡住一段时间.恳请各位大佬帮小弟看下怎么优化.拜谢~

 

代码如下:

String[] cmd = new String[]{"/bin/sh","-c","dig "+ domain +" @"+ DNS +""};//Linux拼接字符串
            //String cmd = "dig "+ domain+" @"+DNS+"";
            //Process p = rt.exec(cmd);
            ProcessBuilder builder = new ProcessBuilder(cmd);
            Process p = builder.start();
            InputStream is = p.getInputStream();
            //获取结果
            BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
            StringBuilder s = new StringBuilder();
            System.out.println("开始读写....");
            long time = new Date().getTime();

            //卡在这里,一旦开始读取,就会浪费很长时间
           //System.out.println("is===="+is.read());
            //System.out.println("br===="+br.readLine());

(就是在每次调用readline或者read()方法的时候程序就消耗很长时间,恳请各位大佬帮忙看下)

            String line;
            while((line = br.readLine())!=null){
                System.out.println("正在读写....花费时间="+(new Date().getTime() - time));
                System.out.println("line=="+line);
                s.append(line).append("\n");
            }
            System.out.println("s="+s);

JavaJava EE
文明上网,理性发言
客户端 Android iPhone WP7