So,here is the question,within the connection thread,how do I catch
the InterruptedException?
你不能.由于如果您的线程在读取I / O操作中被阻止,则无法中断.这是因为中断只是设置一个标志来指示线程已被中断.但是如果您的线程已被I / O阻塞,它将看不到该标志.
正确的方法是关闭底层套接字(线程被阻塞),然后捕获异常并将其传播.
因此,由于您的连接线程扩展了Thread,请执行以
@Override
public void interrupt(){
try{
socket.close();
}
finally{
super.interrupt();
}
}
这样就可以中断I / O上阻塞的线程.
然后在你的run方法中执行:
@Override
public void run(){
while(!Thread.currentThread().isInterrupted()){
//Do your work
}
}
所以在你的情况下不要试图捕获InterruptedException.您无法中断I / O上阻塞的线程.只需检查您的线程是否已被中断,并通过关闭流来促进中断.
@H_404_10@
@H_404_10@
相关文章
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250