不明白为什么 mark() 和 reset() 是同步的,为什么 read() 不是?
最佳答案
java.io.InputStream 是一个抽象类。它有一个默认的标记/重置实现,只在重置时抛出异常,告诉它不受支持,因此不支持它的子类不需要编写自己的方法来抛出异常。 "synchronized"在默认情况下没有用,抛出异常。
任何支持它的子类都必须重写这些方法,并且同步不会被继承,因此被重写的方法可能同步也可能不同步。
我认为没有任何影响。
我想这是一个没有后果的设计缺陷,或者它可能是一个警告,所以程序员将它子类化以同步这些方法,因为它应该那样做。
关于java - 为什么在 java.io.InputStream 中只有 mark() 和 reset() 方法同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30775004/