배타적 수행
[Java] 동시성, 스레드 조심해야할 사항1
여러 스레드를 사용하는 상황에서 프로그래밍을 할 때, 주의해야할 상황이 하나 있다. 바로 여러 스레드가 변수를 공유해서 사용하는 상황이다. 무엇을 조심해야할까? 첫번째는, 한 스레드가 접근할 때 다른 스레드는 접근하지 못하게 하는 것이다. 이를 배타적 수행이라고 한다. 두번째는, 한 스레드가 변경한 값을 다른 스레드도 볼 수 있게 하는 것이다. 이를 스레드간 통신이라고 한다. 배타적 수행과 스레드간 통신이 꼭 지켜져야하는 것은 아니다. 하지만 상황을 잘 이해하고 필요하다면 꼭 적용해야 내가 원하는 결과가 나올 수 있다. 차례대로 살펴보자. 배타적 수행 언제 한 스레드가 공유 데이터에 접근할 때 배타적으로 수행해야할까? 스레드 1이 Number객체를 변경 중이라서 상태가 완전하지 않은 순간의 객체를, 스레..