자바트러블슈팅-스레드 진단하기(1)

스레드 진단하기

스레드에서 발생하는 문제 중 가장 대표적인것

레이스 컨디션(race condition)

멀티 스레드 환경에서 하나이상의 공유데이터를 처리 할때 아무런 록처리를 하지 않을 경우 동시에 여러 스레드에서 데이터를 수정할수있다.
이런 상황에서 데이터가 꼬여서 무한대기하거나 무한 루프에 빠질수 있는데 이런 상황을 레이스 컨디션이라고 한다.

데드록(deadlock)

두개 이상의 스레드에서 록이 풀리기만을 기다리는 상황이 있는데 이러한 상황을 데드록이라고 한다.

스타베이션(starvation)

스타 베이션은 어떻게 보면 데드록과 비슷하지만 원인은 cpu에서 일할 기회를 받지 못하는 경우이다.

라이브 록(live lock)

하나의 스레드에서 다른 스레드로 응답을 주는 경우가 있는데 응답을 받은 스레드가 다시 요청한 스레드를 호출해서 작업이 반복적으로 작업이 진행되는 상태

다른 형태의 예층 불가능한 오류(nondeterminism)

멀티 스레드 프로그램에서 항상 같은 결과라고 생각했지만 상황에따라 달라지는 경우에서 발생한다.

참조