"writeObject"가 클래스에서 유일한 "synchronized" 코드여선 안됩니다

 

synchronization의 목적은 하나의 스레드에서만 지정된 코드를 실행할 수 있도록 하는 것입니다. writeObjectsynchronized로 선언하는 것은 실제로는 문제가 없습니다. 하지만 클래스 내 synchronized 선언된 writeObject가 동기화와 관련된 유일한 메서드인 것은 이해가 되질 않습니다.

규칙을 어긴 코드

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 { // 규칙을 어긴 코드
    // ...
  }
}

규칙을 준수한 해결책

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 {
    // ...
  }
}

If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project