gpt4 book ai didi

java - 如何阻止另一个 Java 线程?

转载 作者:行者123 更新时间:2023-12-01 10:11:40 26 4
gpt4 key购买 nike

也许我想得太复杂了,但我有以下情况:

我有一个 Server.java 类,它使用以下相关代码部分扩展了 Thread:

public void run() {
while(listening) {
try {
ServerThread cst = new ServerThread(serverSocket.accept());
cst.start();
} catch (IOException e) {
listening = false;
System.out.println(e.getMessage());
}
}
}

然后我的 ServerThread 处理所有传入的内容。

我现在的问题是,是否有可能停止这个线程(服务器),例如通过命令行。

我尝试添加一个新类,它将处理命令行输入和 .interrupt() 这个线程,但这有点搞砸了..

最佳答案

这是一种方法:

  1. 提供一个可以从另一个类/线程访问的监听 setter 。

  2. ServerSocket 上设置合理的超时(例如 1 秒)并处理 SocketTimeoutException

要停止线程,请将 listening 设置为 false,线程将在 1 秒内停止。如果您想要更好的控制,请研究 java.nio 中的异步 I/O 类。

关于java - 如何阻止另一个 Java 线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36091278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com