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
它应该完成。
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
它应该完成。