2014-02-05 38 views
1

认为客户端已连接到服务器,并且它正在使用多个线程在同一时间为多个客户端提供服务,并且服务器需要为新角色关闭,并且客户端已在服务器中,因此不应受到干扰。我们怎么做到这一点?如何在java中终止执行线程?

+2

结束您的循环接受新的连接。如果你想得到更详细的答案,那么首先展示你的代码。 –

回答

2

做这样的事情:

public class TheThreadClass extends Thread{ 
    private bool terminated; 

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

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

感谢您的答案。我知道了 –

+0

你可以使用'Thread.interrupt()'在这里更好的效果,'Thread.isInterrupted()'并保存额外的布尔和方法。但是这些都不会解除对'ServerSocket.accept()的阻止。' – EJP

+0

@EJP是的,正确的。 – HAL9000

-1

我觉得中断()方法可以终止线程最好的,简单的方法。

+0

除了它不终止它。阅读Javdoc。 – EJP

2

只需关闭ServerSocket.阻止在accept()中的线程将抛出应退出的IOException: socket closed,。然后不会接受新的连接,但所有现有的连接都将继续提供服务。