不明白为什么mark()和reset()是同步的,为什么read()不是?
答案 0 :(得分:4)
java.io.InputStream是一个抽象类。它有一个标记/重置的默认实现,它只在重置时抛出一个异常,告诉它不受支持,因此不支持它的子类不需要编写自己抛出异常的方法。 “synchronized”对于默认情况没有用,可以抛出异常。
任何支持它的子类都必须覆盖这些方法,并且不会继承同步,因此overriden方法可能会同步也可能不会同步。
我认为它没有任何效果。
我想这是一个没有后果的设计缺陷,或者它可能是一个警告,所以程序员将它子类化为同步这些方法因为它应该这样做。