【问题标题】:How to terminate the execution of thread in java?如何终止java中线程的执行?
【发布时间】:2014-02-05 19:32:06
【问题描述】:

认为客户端已经连接到服务器并且它正在使用多个线程同时为多个客户端提供服务,并且需要为新来者关闭服务器并且客户端已经在服务器中不应该被打扰。我们该怎么做?

【问题讨论】:

  • 结束循环接受新连接。如果您想要更详细的答案,请先显示您的代码。

标签: java network-programming client-server


【解决方案1】:

做这样的事情:

public class TheThreadClass extends Thread{
    private bool terminated;

    public void terminate(){
        this.terminate = true;
    }

    @Override
    public void run(){
        while(!terminated){
            // thread code here
        }
    }
}

【讨论】:

  • 感谢您的回答。我明白了
  • 您可以在这里使用Thread.interrupt() 以获得更好的效果,并使用Thread.isInterrupted(), 并保存额外的布尔值和方法。但是这些都不会解除ServerSocket.accept().
【解决方案2】:

只需关闭ServerSocket.accept() 中阻塞的线程将抛出一个IOException: socket closed,,它应该退出。然后不会接受新的连接,但所有现有的连接将继续得到服务。

【讨论】:

    【解决方案3】:

    我觉得 interrupt() 方法可能是终止线程的最佳且简单的方法。

    【讨论】:

    • 除非它不会终止它。阅读 Javdoc。
    猜你喜欢
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多