从StdIn读取并同时写入StdOut是否安全?

时间:2016-05-27 14:32:52

标签: java io

以下是代码:

public static void main(String[] args) throws InterruptedException {
    Thread t = new Thread(new Runnable() {
        public void run() {
            while(true){
                BufferedReader buffer=new BufferedReader(new InputStreamReader(System.in));
                try {
                    System.out.println(buffer.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    });
    t.start();
    while(true){
        System.out.println("Text");
        Thread.sleep(1000);
    }
}

我不太确定这样做是否真的安全。这样的代码中是否会出现一些cucncurrency错误?我运行了几个测试,它的工作非常好,但是谁知道在1000000次尝试之后它会如何表现......

1 个答案:

答案 0 :(得分:1)

是的,这很安全。如果您查看println的实施,您会看到代码为synchronized

public void println(String x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}