[동시성 제어 - 1] Java가 제공하는 Lock
                        ·
                          
                      Language/Java
                        1. 동시성 제어 왜 필요한 것일까?한정된 자원을 가장 효과적으로 사용해 낭비를 줄이는 경제적 효율성의 원리는 어김없이 서버에도 적용된다. 수 백, 수 천만에 이르는 사용자들의 요청을 1:1로 순차적으로 대응하는 것은 극히 비효율적이고 생산성이 떨어지기 때문에, 요청에 유연하게 대응하기 위해서는 '동시성'은 필연적으로 수반되어야 한다. 요청에 최적의 응답시간을 보장하기 위해 클라이언트 요청마다 스레드를 할당하거나 비동기 / 논블로킹 IO를 사용할 수 있는데, 이 때 공유자원(shared resource)에 대하여 서로 다른 두 스레드가 동시에 조회, 수정하는 일이 발생할 수 있다. 만약 공유 자원에 대한 접근을 제대로 제어하지 않는다면 API의 멱등성이 깨지고, 원치 않는 결과와 장애를 만들어낼 수 있기..