如果在不包含数据的ObjectInputStream上调用readObject函数会发生什么?
会抛出I/O异常吗?
我正在尝试使用PipedInputStream与ObjectInputStream和ObjectOutputStream包装的线程读取和写入数据。
是的,它将抛出IOException,因为它不能反序列化你正在请求的对象
https://docs.oracle.com/javase/8/docs/platform/serialization/spec/exceptions.html
我尝试了一下,readObject阻塞了线程,直到数据被添加到流中,但是如果我在阻塞状态下关闭流,它会抛出EOFException
当你在DataInputStream上调用readObject()时,它会阻塞,直到有数据可读。如果在流被阻塞时关闭流,它将抛出EOFException。这是因为DataInputStream将尝试从流中读取数据,但是流将被关闭,并且没有数据可读。