취준을 위해 열심히 과제를 푸는 도중에 동시성 관련 문제가 있어서
테스트 코드를 작성했는데 생각처럼 동작하지 않는 것이다.
관련해서 적어보겠다.
문제의 코드는 이렇다.
나는 당연히 제대로 동작하겠다 싶어 테스트 코드를 그대로 작성했다.
결과는?
데드락이 발생하면서 예상한 100점이 쌓이어야 하는 것돠 달리 80점이 쌓였다. 왜그런걸까?
(그림의 값을 반대로 넣었네...)
쿼리를 분석해보면 나는 데이터가 없는 테이블에 xLock을 걸었기 때문에 락은 이미 효과가 없다. 즉 적용이 되지 않는다.