java processbuilder读线cpu密集型

java processbuilder读线cpu密集型,java,readline,processbuilder,Java,Readline,Processbuilder,使用ProcessBuilder从JAVA内部运行外部C代码。(编译的)C代码需要约1秒钟才能产生输出-相对较慢 我注意到的是,在C代码完成之前,BufferedReader读取行似乎非常占用CPU。由于我必须每5秒运行一次外部C代码,CPU利用率就会增加。以下是readline代码: BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(

使用ProcessBuilder从JAVA内部运行外部C代码。(编译的)C代码需要约1秒钟才能产生输出-相对较慢

我注意到的是,在C代码完成之前,BufferedReader读取行似乎非常占用CPU。由于我必须每5秒运行一次外部C代码,CPU利用率就会增加。以下是readline代码:

        BufferedReader br = null;
        try {
            br = new BufferedReader(new InputStreamReader(in));
            String line = null;
            while ( (line = br.readLine()) != null) {
                this.pw.add(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
我可以发布整个代码-但是,它与您在上看到的非常相似


有什么建议吗?

我感觉它占用了CPU时间,但它本身并不密集。。。这只是为了输入而阻塞。谢谢你的提示。看起来我可以在读取前使用“br.ready()”进行检查。这并没有停止阻塞,但在我的例子中,阻塞时间减少了近50%。