Java - 在线程中的while循环后无法访问StringBuilder

时间:2016-02-23 21:58:07

标签: java multithreading stringbuilder

class myThread extends Thread {

myThread(Socket socket) {
    Scanner sc = new Scanner(socket);
}

public void run() {
    StringBuilder sb = new StringBuilder();
    try {
        while(sc.hasNext()) {
            sb.append(sc.next());
            sb.append(" ");
        }
        System.out.println(sb.toString());      

    } catch (Exception e) {
        System.out.println(e);      
    }
}

此代码不输出任何内容。但是,如果我将System.out.println(sb.toString());移动到while循环中,它会。 我不知道为什么会这样,但我需要在while循环完成后首先输出代码。

在while循环完成后如何打印StringBuilder.toString()?

1 个答案:

答案 0 :(得分:5)

socket可能永远不会被关闭,而scanner只是在hasNext()上阻止。

关闭socket,它应该完成。