【发布时间】:2017-10-01 21:48:17
【问题描述】:
我正在从 main 函数为这个类创建一个线程,但即使在使用 Thread.currentThread().interrupt() 中断它之后,输出仍然包含行 Still Here。
public class WriteToServer extends Thread {
private DataOutputStream writeMessage;
private String clientName;
public WriteToServer(Socket socket, String clientName) {
try {
this.writeMessage = new DataOutputStream(socket.getOutputStream());
this.clientName = clientName;
} catch(Exception e) {
System.err.println(e);
Thread.currentThread().interrupt();
}
}
public void run() {
try {
Scanner scanner = new Scanner(System.in);
String message = scanner.nextLine();
while (!message.equalsIgnoreCase("quit")) {
writeMessage.writeUTF(clientName + ":" + message);
message = scanner.nextLine();
}
writeMessage.writeUTF(message);
writeMessage.close();
Thread.currentThread().interrupt();
System.out.println("Still Here");
} catch(Exception e) {
System.err.println(e);
Thread.currentThread().interrupt();
}
}
}
我是 Java 新手,我想改进有什么建议吗?
【问题讨论】:
-
“中断”一词在 Java 中被重载为“实际上不是中断”。
-
你能详细说明一下吗?
标签: java multithreading sockets