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

Java - StringBuilder not accessible after while loop in thread

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()?

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

关闭 socket 它应该完成。