• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

안녕하세요 강의 내용을 듣다가 궁금점이 생겨 글을 남기게 되었습니다.

22.04.25 22:35 작성 조회수 235

0

안녕하세요 백기선 강사님 강의 잘 보고있습니다. 스프링핵심프레임워크 ioc 컨테이너 5부 강의 마지막 부분에서 싱글톤 빈으로  객체를 Ioc 컨테이너에서 관리할 경우 프로퍼티가 공유되어서 멀티 스레드 환경에서 프로퍼티 값이 이상하게 될 수도 있다고 말씀하셨는데요, 그렇다면 이러한 경우에 해결 방법으로는 어떤게 있는지 궁금합니다. gof 강의에서 하신 synchronized 를 사용하면 해결할 수 있는 걸까요? 아니면 좀 더 효과적인 방법이 있다면 알려주셨으면 좋겠습니다. 감사합니다. 

답변 1

답변을 작성해보세요.

0

네 동기화 키워드로 해당 프로퍼티에 접근하는 모든 메서드를 동기화 시키는 것도 한가지 방법이구요. 해당 프로퍼티가 쓰레드에 세이프한 싱글톤 객체라면 공유해서 synchronized 라는 키워드 없는 메소드로 사용해도 괜찮습니다. 보통 후자를 많이 사용하고 있죠. 가령 BookService에서 참조하는 BookRepository를 사용할 때 아무도 synchronized 키워드를 쓰진 않자나요. 그밖에도 여러가지 멀티쓰레드에 안전하게 프로그래밍하는 방법이 있지만 자세한 건 "자바 병령 프로그래밍"이라는 책을 참고하세요.