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

V.V*_*cor 3 java stringbuilder multithreading

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);      
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

agl*_*man 5

socket是可能永远不会被关闭,scanner只是阻塞hasNext().

关闭socket它应该完成.