락(lock)이란? 공유 자원을 하나의 쓰레드가 사용하고 있을 때 다른 쓰레드가 공유 자원을 사용하지 못 하도록 제한을 거는 것이다. 공유 자원 이란? 전역 변수 DB 동적 객체 메모리 등의 여러 쓰레드가 접근하여 사용하는 공동의 자원이다. 지역 변수는 단일 쓰레드 안에서 사용되는 자원으로 공유 자원이라고 할 수 없다. Lock의 필요 이유 위의 상황 처럼 쓰레드1과 쓰레드2가 동시에 같은 전역 변수에 접근한다고 가정한다면 두 개의 쓰레드가 완료된 후에는 값이 2가 되어야 하는지 1이 되어야 하는지 알 수 없을 것이며 매번 값이 변경될 가능성도 있을 것이다. 이처럼 알 수 없는 비정형적인 결과를 발생 시킬 수 있으며 동시에 접근 쓰레드들은 공유 자원을 사용하기 위한 race condition 상태가 되게..