(The name of your question does not actually correspond to the scenario described in the body, so I assume that you are asking about both cases ...)
Two threads that simply access (at this point), not changing BufferedImage , do not need to synchronize with each other.
However, it is necessary to establish a connection between the thread that created and initialized the BufferedImage object in the first place, and any threads that subsequently read it. Without this synchronization point, read streams can see stale values ββfor parts of the image data structure.
source share