Error Note

[Error Note] 25. InterruptedException : 쓰레드 실행 오류

Song hyun 2024. 5. 17. 16:34
728x90
반응형

[Error Note] 25. InterruptedException : 쓰레드 실행 오류

*함께 보면 좋을 글

https://whatsthatsound.tistory.com/184

 

[Java] 89. 사용자 모드와 커널 모드

[Java] 89. 사용자 모드와 커널 모드 1. 컴퓨터의 구성 2. 소프트 웨어 시스템의 구성 3. 이중 모드와 시스템 호출4. 인터럽트 1. 컴퓨터의 구성(1) 컴퓨터 시스템은 크게 하드웨어(Hardware)와 소프트웨

whatsthatsound.tistory.com


 

멀티 쓰레딩을 이용해 백그라운드 서비스 파일을 작성하던 중, 

계속해서 'InterruptedException'이 발생하는 것을 알 수 있었다.

 

해당 오류가 계속 발생하는 지점을 살펴보니, "Thread.sleep()" 구문이 적힌 부분이었다. 

마감이 임박한 팀 프로젝트였기 때문에, 해당 오류를 정면돌파하기에는 남은 시간이 적어(ㅜㅜ) 다른 방식으로 Thread.sleep()을 사용하게 되었다. 

 

이후에 선생님이 알려주신 오류를 기록하기 위해 글을 남긴다!

 

InterruptedException은 "인터럽트Interrupt"라는 개념과 관련이 깊다.

인터럽트는 현재 수행 중인 작업을 잠시 중지하고, 긴급하게 해야 할 작업을 처리할 때 발생한다. 

-> 한 마디로 실행중인 프로그램의 일반적인 흐름을 잠시 중지시키고, 긴급하게 해야할 특정 작업을 처리한 뒤, 다시 원래의 프로그램 실행 흐름으로 돌아가게 하는 것이다!

 

Java에서는 .interrupt()를 통해 스레드를 interrupt 상태로 만들수 있다.

InterruptedException은 그 interrupt 상태와 밀접한 관련이 있는 예외라고 보면 되겠다. 

-가령 sleep()으로 쓰레드가 호출 or 대기 상태에서, 인터럽트 상태가 true가 된다거나

-쓰레드의 인터럽트 상태가 true 일 때, 작업 쓰레드에 제어권이 넘어와 sleep() 메서드가 호출되었을 때 

=> 이럴 때 InterruptedException이 발생한다.

728x90
반응형