2014-02-05 65 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,。然後不會接受新的連接,但所有現有的連接都將繼續提供服務。