Redisson - 100개의 스레드가 동시에 tryLock을 호출하나요?
[Redisson을 활용하여 재고로직 작성하기] 강의 수강 후 궁금한 점이 있어 질문드립니다.
100개의 스레드가 동시에 재고 감소를 시도하면, 모든 스레드가 동시에 trylock으로 락 획득을 요청하는 건가요? 그렇다면 waitTime이 15초 leaseTime이 1초인 경우, 16번째 스레드부턴 락을 획득할 수 없을 거라고 예상했는데 테스트는 통과하여 질문드립니다.
stockService.decrease 작업이 1초보다 덜 걸려서 이게 가능한 건가요?
답변 1
1
윤지애님 안녕하세요.
100개의 스레드가 동시에 재고 감소를 시도하면 모든 스레드가 tryLock 으로 락 획득을 요청 하는것이 맞습니다.
stockService.decrease 의 작업이 1초보다 안걸려서 모든 스레드가 기다렸다가 락 획득을 성공하는 것이 맞습니다.
예를들어 1번스레드가 10시 01분 0.01초에 락 획득을 하였고 2~100 번 스레드가 10시 01분 0.02초에 락 획득을 시도한다면 2~100번 스레드는 기다리게 됩니다.
그 후 1번 스레드의 작업이 모두 종료되어 10시 01분 0.03초에 락을 해제하게 된다면 기다리고 있던 스레드에서 락 획득이 가능하게 됩니다.
결론적으로 waitTime이 15초이고 15초 안에 모든 스레드의 작업이 완료되었기때문에 테스트에 성공하게 되는 것입니다.
감사합니다.
레디선 테스트코드에서 채널이름은 없어도 되는건가요?
0
43
2
낙관적 락을 사용할 떄 차이점
0
121
2
동시성 검증 코드에 관한 문의
0
94
2
단일연산
0
70
2
낙관적락vs. 레디스락
0
108
2
안녕하세요. 레디슨 질문있습니다..!!
0
67
2
@Lock(OPTIMISTIC)이 필요한 이유
0
90
2
get_lock 의 timeout이 3000초 이던데 너무 긴거 아닌가요?
0
132
2
DataSource Hikari 사용 이유
0
147
2
saveAndFlush 사용 이유 문의
0
113
3
비관적 락 VS 네임드 락
0
160
3
application.yaml 에 redis 정보
0
100
2
왜 클래스 이름에 Facade 가 붙나요?
0
185
2
@Transactional 으로 인한 동시성 문제 발생 원인이 궁금합니다.
0
219
2
@modifying 이용한 동시성 제어
0
168
2
DB락과 분산락
0
261
2
NamedLock 테스트 실패
0
186
2
테스트에서 트랜잭션 어노테이션 질문 있습니다.
0
172
2
optimistic Lock 재시도 질문입니다.
0
231
2
낙관적 락 테스트 실패
0
239
2
오류?
0
1627
4
LettureLockStockFacadeTest에서 오류가 발생합니다.
1
268
2
Pessimistic Lock 전체 테스트 오류 문의
0
360
3
비관적 락 vs 레디스(Lettuce)락 비교 관련 질문
0
460
2





