"readObject"는 "synchronized"여선 안됩니다

 

Serializable 객체가 파일에서 rehydrate를 할 때readObject 메서드는 특별히 다뤄줘야합니다. readObject에 의해 만들어지는 객체는 메소드를 호출한 스레드에서만 가시성이 생깁니다. 결과적으로 synchronized 키워드는 필요하지 않습니다. 그리고 synchronized을 사용하는 것은 혼란스럽기만 합니다. 이 메서드는 리팩토링되야합니다.

규칙을 어긴 코드

private synchronized void readObject(java.io.ObjectInputStream in)
     throws IOException, ClassNotFoundException { // 규칙을 어긴 코드
  //...
}

규칙을 준수한 해결책

private void readObject(java.io.ObjectInputStream in)
     throws IOException, ClassNotFoundException { // 규칙을 준수한 해결책
  //...
}

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

원문으로 바로가기

Star This Project