Why only mark() and reset() method are synchronized in java.io.InputStream?

341 Views Asked by At

Don't understand why mark() and reset() are synchronized and why read() not?

1

There are 1 best solutions below

0
On

java.io.InputStream is an abstract class. It has a default implementation for mark/reset that only throw an exception on reset telling that is not supported so subclasses that don't support it don't need to code their own method throwing the exception. "synchronized" is not useful for the default case, to throw an exception.

Any subclass that supports it will have to override those methods and synchronization is not inherithed so the overriden methods may or may not be synchronized.

I think it does not have any effect.

I guess it is a design flaw without consequences or maybe it is a warning so programmers that subclass it to synchronize those methods too because it should be made that way.