一、问题
启动了个线程accept等待连接,但把localSocketServer.close() 时accept不会抛异常,导致线程不会退出
Thread({
localSocketServer = LocalServerSocket(addressStr)
while (true) {
try {
socket = localSocketServer!!.accept()
}catch (e:Exception){
LogE("抛异常")
e.printStackTrace()
break
}
LogE("有新的连接")
}
}).start()
解决:用 Os.shutdown进行关闭
try {
Os.shutdown(localSocketServer!!.fileDescriptor, OsConstants.SHUT_RDWR)
} catch (e: ErrnoException) {
LogE("关闭失败")
e.printStackTrace()
}
本文讲述了如何修复线程中LocalServerSocket.close()不抛异常的问题,通过Os.shutdown方法实现正确关闭并确保线程退出。重点在于避免因为资源管理不当导致的线程挂起问题。
4373

被折叠的 条评论
为什么被折叠?



