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

标签 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() 上运行这个和主线程 block ,但我的 CPU 使用率始终保持在 ~15-20%。

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

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

最佳答案

我假设您有某种代码来检查 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();
....

关于java - 从控制台读取时 CPU 使用率高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17073831/

相关文章:

c# - BlockingQueue 以何种方式阻塞?

c - 信号量队列

java - 使用即时类生成向应用程序添加新功能

java - Q : Solve almostIncreasingSequence in Java (Codefights)

JavaFx:fxmlLoader.load 返回父级?

java - 如何用另一个表的计数更新一个表的字段? SQLite、Java、安卓

mysql - MySQL有没有办法等待符合条件的行被插入

java - 如何避免写入太多数据输出而阻塞线程?

java - 下面带有滚动和编辑文本的弹出菜单

linux - 我可以依靠 Linux close() 不阻塞文件 I/O 吗?