一尘不染

Java如何中断ServerSocket accept()方法?

java

在我的主线程中,我有一个while(listening)循环,它调用accept()ServerSocket对象,然后启动一个新的客户端线程,并在接受新客户端时将其添加到Collection中。

我还有一个Admin线程,我想使用它发出诸如“ exit”之类的命令,该线程将通过侦听false来关闭所有客户端线程,关闭自身并关闭主线程。

但是,循环中的accept()调用会while(listening)阻塞,并且似乎没有任何方法可以中断它,因此,无法再次检查while条件,并且程序无法退出!

有一个更好的方法吗?还是以某种方式来中断阻塞方法?


阅读 1128

收藏
2020-03-16

共1个答案

一尘不染

  你可以close()从另一个线程进行accept()调用,该调用将引发SocketException。
2020-03-16