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

啵溜啵溜neal 发布于 2019/07/12 14:48
阅读 579
收藏 0

【深度】AI、5G时代下,算力网络与内生安全最全解析!>>>

        代码能够正常运行,但是批量处理数据的时候,会消耗很长时间.开始我以为是我调用命令有问题,但是经过调试,发现每次代码运行到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);

加载中
0
wgslucky
wgslucky

你在linux中单独执行一下那个命令,看看花的时间长不长,是不是有什么耗时任务

返回顶部
顶部