为什么在java.io.InputStream中只同步mark()和reset()方法?

xin*_*hao 8 java synchronization

不明白为什么mark()和reset()是同步的,为什么read()不同步?

aal*_*lku 4

java.io.InputStream 是一个抽象类。它有一个标记/重置的默认实现,仅在重置时抛出异常,告知不支持它,因此不支持它的子类不需要编写自己的抛出异常的方法。“synchronized”对于默认情况没有用处,无法引发异常。

任何支持它的子类都必须重写这些方法,并且同步不会被继承,因此重写的方法可能会也可能不会同步。

我认为没有任何效果。

我想这是一个没有后果的设计缺陷,或者可能是一个警告,因此程序员将其子类化以同步这些方法,因为它应该这样做。