• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

AtomicIntegerGetAndUpdateExample 예시가 부자연스럽습니다.

24.06.27 20:29 작성 24.06.27 20:30 수정 조회수 36

0

AtomicInteger의 getAndUpdate가 람다를 적용하기 전의 값을 반환하므로,

해당 메소드의 반환 값을 출금 후 잔고가 아니고, 출금 전 잔고로 표현하는 것이 의미가 맞습니다.

 

추가로 출금 전의 잔고가 출금액 보다 작아야 잔고 부족으로 출금이 실패한다고 표현해야 자연스러운 것 같습니다.

 

해당 예시를 다음과 같이 수정했습니다.

// main function
for (int i = 0; i < 5; i++) {
    new Thread(() -> {
        int withdrawalAmount = 500; // 출금액
        
        int beforeUpdatedBalance = accountBalance.getAndUpdate(balance -> {

            if (balance >= withdrawalAmount) {
                return balance - withdrawalAmount; // 출금 성공
            } else {
                return balance; // 출금 실패
            }
        });

        if (beforeUpdatedBalance < withdrawalAmount) {
            System.out.println(Thread.currentThread().getName() + " : 잔고 부족으로 출금 실패");
        } else {
            System.out.println(Thread.currentThread().getName() + " : 출금 전 잔고: " + beforeUpdatedBalance);
        }
    }).start();
}

 

강의 잘 듣고 있습니다. 감사합니다 🙂

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.06.29

안녕하세요, 인프런 AI 인턴입니다.
할수있다님, 지금 질문하신 내용은 프로그래밍 정보 자료가 아니기 때문에 제공된 정보로는 답을 드릴 수 없습니다.
다른 프로그래밍 관련 질문이 있다면 언제든지 도와드리겠습니다. 감사합니다 🙂

채널톡 아이콘