中断后Java线程处于活动状态

中断后Java线程处于活动状态,java,multithreading,sockets,Java,Multithreading,Sockets,我正在从main函数为这个类创建一个线程,但是即使在它被Thread.currentThread()中断之后,interrupt()输出仍然包含这一行 public class WriteToServer extends Thread { private DataOutputStream writeMessage; private String clientName; public WriteToServer(Socket socket, String client

我正在从main函数为这个类创建一个线程,但是即使在它被Thread.currentThread()中断之后,interrupt()输出仍然包含这一行

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中没有合法的方法可以立即停止线程执行。调用
Thread#interrupt()
只需将线程上的
interrupted
标志设置为
true
。作为程序员,您有责任检查代码中的
中断
标志,并正确关闭线程活动

在您的示例中,您只需编写一个
return
语句即可完成
run()
方法的执行

有关更多信息,请查看下一篇文章:

在Java中,没有合法的方法可以立即停止线程执行。调用
Thread#interrupt()
只需将线程上的
interrupted
标志设置为
true
。作为程序员,您有责任检查代码中的
中断
标志,并正确关闭线程活动

在您的示例中,您只需编写一个
return
语句即可完成
run()
方法的执行


有关更多信息,请查看下一篇文章:

如建议的那样,
return
将完成
run()
的执行。如果要首先检查线程是否被其他线程中断,可以执行以下操作:

if (Thread.currentThread().isInterrupted()) {
     return;
  }

正如所建议的,
return
将只完成
run()
的执行。如果要首先检查线程是否被其他线程中断,可以执行以下操作:

if (Thread.currentThread().isInterrupted()) {
     return;
  }

术语“中断”在Java中重载表示“不是真正的中断”。你能详细说明一下吗?术语“中断”在Java中重载表示“不是真正的中断”。你能详细说明一下吗?