본문 바로가기
자바 쓰레드 인터럽트 블로킹 해결 (Java Thread Interrupt Blocking) 자바 쓰레드 인터럽트 블로킹 해결 (Java Thread Interrupt Blocking) 자바 - 인터럽트에 응답하지 않는 블로킹 작업 다루기자바Java 라이브러리에 포함된 여러 블로킹 메소드는 대부분 Thread 인터럽트가 발생하는 즉시 멈추면서 InterruptedException을 띄우게 되어 있다. 따라서 작업 중단 요청에 적절하게 대응하는 작업을 쉽게 구현할 수 있다. 그런데 잘 살펴보면 모든 Java 블로킹 메소드가 인터럽트에 대응하게 되어 있지는 않다. 예를 들어 동기적인 소켓 I/O를 실행하는 도중에 스레드가 멈춰 있는 경우라던가 암묵적인intrinsic 락을 확보하기 위해 대기하는 등의 작업에 멈춰있는 경우라면, Interrupt를 거는 것이 인터럽트 상태 변수의 값을 설정하는 것 말.. 2018. 5. 18.
자바 스레드 Thread 문제점 3가지, 사이클, 자원 낭비, 안전성 문제 자바 스레드 Thread 문제점 3가지, 사이클, 자원 낭비, 안전성 문제 작업마다 자바 스레드를 생성하는 정책은 상용 서비스에서 사용하기에는 무리가 있다. 왜냐하면, 특정 상황에서 엄청나게 많은 대량의 자바 스레드가 생성될 수도 있는데, 이럴 때는 아래와 같은 단점이 발생한다. Java Thread 라이브 사이클 문제 자바 스레드를 생성하고 제거하는 작업에도 자원이 소모된다. Java Thread를 생성하고 제거하는 데 실제로 얼마만큼의 자원을 소모하는지는 운영체제에 따라 다르지만, 어쨌거나 자바 스레드를 생성하는 과정에는 일정량의 시간이 필요하다. 따라서 클라이언트의 요청을 처리할 때 기본적인 딜레이가 생기고, 그동안 JVM과 운영체제는 몇 가지 기초적인 작업을 진행한다. 만약 클라이언트의 요청 내용.. 2017. 9. 26.