Mik*_*ike 5 java serialization nonblocking
我正在使用an ObjectInputStream来调用readObject序列化的阅读Objects.我想避免使用此方法块,所以我希望使用类似的东西Inputstream.available().
InputStream.available()会告诉你有可用的字节,read()不会阻止.是否有一种等效的串行化方法可以告诉您是否有Object可用且readObject不会阻塞?
不会.虽然您可以ObjectInputStream在另一个线程中使用它并检查是否有可用的对象.一般来说,民意调查不是一个好主意,特别是对于不良保证InputStream.available.
Java 序列化 API 并非旨在支持available()功能。如果您实现自己的对象读取器/写入器功能,则可以从您喜欢的流中读取任意数量的数据,并且没有报告方法。
所以readObject()不知道它会读取多少数据,所以它不知道有多少对象可用。
正如另一篇文章所建议的那样,最好的办法是将阅读内容移到一个单独的线程中。