在我的主线程中,我有一个while(listening)循环,它调用accept()ServerSocket对象,然后启动一个新的客户端线程,并在接受新客户端时将其添加到Collection中。
while(listening)
accept()ServerSocket
Collection
我还有一个Admin线程,我想使用它发出诸如“ exit”之类的命令,该线程将通过侦听false来关闭所有客户端线程,关闭自身并关闭主线程。
但是,循环中的accept()调用会while(listening)阻塞,并且似乎没有任何方法可以中断它,因此,无法再次检查while条件,并且程序无法退出!
accept()
有一个更好的方法吗?还是以某种方式来中断阻塞方法?
你可以close()从另一个线程进行accept()调用,该调用将引发SocketException。