자바 기반의 플랫폼이나 솔루션을 사용하다보면 오류로 장시간 남아있는 스레드 처리가 필요할때가 있음
자바에서 스레드란
- 운영체제 역할인 JVM에서 자원할당받은 하나의 프로세스 내에 실행되는 흐름 단위
- 요청으로 할당받은 스레드에 다른 요청이 들어오면 기다려야함 → 앞에 요청 처리가 오래걸리면 지연이나 타임아웃 발생
- 스레드 생명주기: New(객체생성) → Runnable(준비) → Running(실행) → Terminated(종료) → Blocked(지연)
자바에서 스레드 종료방법은
- 자바는 실행중인 스레드 강제종료 지원 안한다고 함 → 비정상 상태가 될수 있다고 함
- Thread.destory()함수는 자원의 cleanup작업 하지 않아 데드락을 유발시킨다고 함
- Thread.stop()함수는 Deprecated되었다고 함 → 여러스레드가 접근할수 없게 막는 잠금기능에서 해당 함수를 사용하게되면 잠금기능이 풀리면서 여러 쓰레드에서 접근이 가능하게 된다고 함(일관성 깨짐)
- 그외 suspend 등이 안전상의 문제가 있다고 함
- Thread.interrupt() → 스레드를 안전하게 종료시키는 방법이며 즉시 종료는 아니라고 함 예를들면 스레드 멈춰달라고 요청
댓글 없음:
댓글 쓰기