도당탕탕

Item76 : Failure Atomicity(실패 원자성)을 보장하려고 노력하라. 본문

JAVA

Item76 : Failure Atomicity(실패 원자성)을 보장하려고 노력하라.

backlo 2023. 2. 1. 13:40

실패원자성

실행도중 실패한 함수가 실패하더라도, 원본 객체는 변함없는 성질

실패원자성 보장 방법

  • immutable 객체 생성
  • 함수 실행 전 파라미터를 체크
public Object pop() {
  if (size == 0)
    throw new EmptyStackException();
  Object result = elements[--size];
  elements[size] = null; // Eliminate obsolete reference return result;
}
  • 실패할만한 로직을 함수의 앞부분에 배치
  • 원본객체를 임시 객체로 복사한뒤, 작업이 성공하면 원본객체를 대체
  • 함수 실행도중 발생한 실패를 캐치하여 원래 상태로 롤백
    • 단, 멀티스레딩 환경에서 적절한 동기화 없이 객체를 변경한 경우, 불가능

정리

실패원자성을 보장하려고 노력하되, 보장할 수 없으면 문서에 명시하여야 한다.

Comments