Thread의 동기화
·
Java
쓰레드의 동기화싱글쓰레드 환경에서는 프로세스 내에 하나의 쓰레드로 작업이 수행되기에 데이터의 사용에 문제가 없지만 멀티쓰레드 환경에서는 동일한 자원을 공유하여 작업을 하게 될 경우 서로의 작업에 영향을 주게 된다. 예를 들어, A와 B 쓰레드가 동일한 자원을 이용하여 작업을 진행한다고 가정해보자.A가 해당 자원을 변경시킨 후 B가 자원을 읽으려고 한다면 원래 얻고자 했던 결과가 아니라 A가 변경시킨 자원을 얻게 된다.이러한 문제를 방지하기 위해 자원을 방해 받지 않도록 하는 개념이 임계 영역과 Lock이다. 공유할 자원에 대한 소스코드 영역을 임계 영역으로 지정해두고, 공유 자원에 대한 Lock을 획득한 하나의 쓰레드만이 자원을 사용하도록 하는 것이다. 쓰레드가 자원 사용을 완료하여 Lock을 반납해야..