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

时间:2015-06-11 08:03:12

标签: java synchronization

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

1 个答案:

答案 0 :(得分:4)

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

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

我认为它没有任何效果。

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