• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

테스트 실패 후 tryLock waitTime 설정 변경 뒤 테스트 성공에 대한 질문

23.08.08 01:39 작성 조회수 381

0

waitTime을 10초로 설정했어도 leaseTime이 1이기 때문에 테스트는 성공했어야 할 것 같은데 왜 실패하나요?

그리고 waitTime을 10초에서 15초로 변경하면 왜 성공하나요?

답변 1

답변을 작성해보세요.

0

김찬님 안녕하세요.
waitTime 은 락 대기를 위해 기다리는 시간이고 leaseTime 은 락을 점유하는 시간이기 때문입니다.
1번째 락을 점유한스레드가 10:00 에 점유하였고 10:11초에 락을 해제한다고 할때 10초를 기다리면 락을 얻지 못하므로 실패하고 15초로 늘려주면 락을 얻을 수 있기때문에 성공하는 것입니다.

감사합니다.

jhj13062004님의 프로필

jhj13062004

2023.08.10

1번째 락을 점유한 스레드가 10:00에 점유하면 10:01초에 락을 해제하는게 아닌가요?

김찬님의 프로필

김찬

질문자

2023.08.14

jhj13062004님이 말씀하신대로, leaseTime(점유하는 시간)이 1초니까 1초만 점유한 뒤 10:01에 락을 해제하게 되는 것 아닌가요?

1번째 락을 점유한 스레드가 10:00 획득 10:01 해제
2번째 락을 점유한 스레드가 10:01 획득 10:02 해제
.....
15번째 락을 점유한 스레드가 10:14 획득 10:15 해제
를 하게 된다면 16~100 스레드는 락획득에 실패하게 됩니다.
만약 1초씩걸린다고 했을때 100초를 기다린다고 하면 모두가 락을 획득할 수 있을 것입니다.

김찬님의 프로필

김찬

질문자

2023.08.14

이해됐습니다. 설명 감사드립니다.