Growth-Collectors / effective-java

repository for effective java study
3 stars 2 forks source link

아이템 76. 가능한 한 실패 원자적으로 만들라 #78

Open HanaHww2 opened 1 year ago

YunDaHyee commented 1 year ago

아이템 76. 가능한 한 실패 원자적으로 만들라

실패 원자적(failure-atomic)

호출된 메서드가 실패하더라도 해당 객체는 메서드 호출 전 상태를 유지하는 특성

메서드를 실패 원자적으로 만드는 방법

불변 객체(아이템 17)로 설계하는 방법


가변 객체의 메서드를 대상으로 하는 방법


객체의 임시 복사본에서의 작업이 성공하면 원래 객체와 교체하는 방법

  • 데이터를 임시 자료구조에 저장해서 작업하는 게 더 빠를 때 적용하기 좋다.
  • 예제
  • 어떤 정렬 메서드에서 정렬 수행 전에 입력 리스트의 원소들을 배열로 옮겨담을 때 배열을 사용하면, 정렬 알고리즘의 반복문에서 원소들에 훨씬 빠르게 접근할 수 있다.
    => 성능을 높이고 입력 리스트는 변하지 않게 할 수 있다.


작업 도중 발생하는 실패를 가로채는 복구 코드를 작성해서 작업 전 상태로 되돌리는 방법

  • 자주 쓰이진 않지만 주로 (디스크 기반의) 내구성(durability)를 보장해야 하는 자료구조에 쓰인다.

특징