Java - 线程中while循环后StringBuilder不可访问

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

5
我强烈怀疑问题在于循环没有结束,因为套接字没有被关闭。 - Jon Skeet
1个回答

5

socket 可能从未被关闭,而 scanner 在阻塞于 hasNext()

关闭 socket 即可解决问题。


现在可以运行了。谢谢! - V.Vocor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接