The purpose of synchronization is to ensure that only one thread executes a given block of code at a time. There's no real problem with marking
writeObject
synchronized
, but if it's highly suspicious if this serialization-related method the only
synchronized
code in a class
.
public class RubberBall { private Color color; private int diameter; public RubberBall(Color color, int diameter) { // ... } public void bounce(float angle, float velocity) { // ... } private synchronized void writeObject(ObjectOutputStream stream) throws IOException { // Noncompliant // ... } }
public class RubberBall { private Color color; private int diameter; public RubberBall(Color color, int diameter) { // ... } public void bounce(float angle, float velocity) { // ... } private void writeObject(ObjectOutputStream stream) throws IOException { // ... } }