我有一个需要读取数百个套接字通信的应用程序。
我正在使用具有线程数上限的 ThreadPool 来服务这些套接字。如果套接字没有传入消息,这会导致所有线程阻塞。
我目前使用 100 毫秒的 soTimeout 来避免永久阻塞。我不喜欢这种方法,因为它可能会在它开始接收输入时超时。
还有其他方法可以解决这个问题吗?
我尝试使用 ObjectInputStream.isAvailable() 检查,但无论流中是否有数据,它总是返回 0。
我找不到任何其他方法来检查流中是否有数据。这将是理想的,因为那时我可以检查是否有数据,如果没有,则继续下一个流。