从控制台读取时CPU使用率高

时间:2013-06-12 19:37:02

标签: java blocking

所以我正在编写一个带有用户输入的小程序

public class Test {
    public static void main(String[] args) throws IOException {
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        String something = input.readLine();
    }
}

这是切断的相关部分,我运行它和readline()上的主线程块,但我的CPU使用率是〜15-20%一致。

这里有什么,是否有更有效的方法从控制台读取。

编辑:我在Mac OS 10.8上,此过程已经运行了20分钟。 input.readline()语句包含在一个while循环中,里面有一些简单的处理,但我知道代码没有到达那里。

1 个答案:

答案 0 :(得分:1)

我假设您有某种代码来检查readLine()的状态,否则Java将继续阻塞。

String line = null;
while ((line = br.readLine()) != null) {
    // handle contents of line here
}

使用Scanner类阅读用户输入可能会更好。

Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
....