2011년 5월 25일 수요일

Orphaned Thread(고아 쓰레드)

@ 다중 쓰레드 프로그래밍은 근본적으로 비확정적인 성질을 가지므로 잠재적인 오류의 가능성은 커지기 마련이다. 더욱이 이런 종류의 오류는 재현해 내는게 좀처럼 쉽지 않은 경우가 많아 사무실에서의 우울한 주말을 보낼 가능성을 더욱 높여준다.
* 패턴 이름 : 고아 쓰레드
* 증상 : 다중 쓰레드 프로그램에서 프로그램이 멈춘 것과 같이 보인다. 이때 표준 에러 출력으로 스택 추적 값이 출력될 수도 있고, 그렇지 않을 수도 있다.
* 원인 : 어떤 쓰레드가 처리되지 않은 예외로 인해 종료된 다른 쓰레드에서 데이터가 입력 되기를 기다리고 있기 때문이다.
* 해결책과 예방책 : 예외 처리부를 메인 쓰레드 안에 작성해 놓고 다른 여러 쓰레드의 예외 사황을 이쓰레드에 알리도록 한다. 다른 방법으로는 비정상 종료되는 쓰레드에 처리 코드를 집어 넣어 이 쓰레드를 사용하는 모든 곳에서 이러한 정보를 알 수 있도록 한다.
-- 썬에서는 쓰레드 클래스의 stop메쏘드를 더이상 사용해서는 안되는 메소드로 분류하였다. 이 메소드는 그 상태와 상관없이 쓰레드를 종료 시키므로 자원이 제대로 반환되지 않은채로 쓰레드가 종료되는 경우도 있었고, 이는 언어의 보안 모델을 위반하는 것이기 때문이다.

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...