21.01.21-42일차
🚗 쓰레드(Thread)
🚓 데몬 쓰레드(daemon thread)
- 일반 쓰레드(non-daemon thread)의 작업을 돕는 보조적인 역할 수행
- 일반 쓰레드가 모두 종료되면 자동적으로 종료
- 가비지 컬렉터, 자동저장, 화면 자동갱신 등에 사용된다
- 무한루프와 조건문을 이용해서 실행 후 대기하다가 특정조건이 만족되면 작업을 수행하고 다시 대기하도록 작성
* setDaemon(boolean on)은 반드시 start()를 호출하기 전에 실행되어야 함.
그렇지않으면 IllegalThreadStateException이 발생
🚓 쓰레드의 상태
🚓 쓰레드의 실행제어
- 쓰레드의 실행을 제어할 수 있는 메서드
🚕 sleep()
- 현재 쓰레드를 지정된 시간동안 멈추게 함
- 예외처리를 해야함 (InterruptedException이 발생하면 깨어남)
try{ Thread.sleep(1, 500000); // 쓰레드를 0.0015초 동안 멈추게 함 } catch(InterruptedException e) {} // 필수 예외처리
새로운 메서드 하나 만들어서 sleep()대신 호출. 코드가 더 심플해짐 void delay(long millis){ try{ Thread.sleep(millis); } catch(InterruptedException e) {} }
- 특정 쓰레드를 지정해서 멈추게 하는 것은 불가능
🚕 interrupt()
- 대기상태(WATING)인 쓰레드를 실행대기 상태(RUNNABLE)로 만든다.
🚕 suspend(), resume(), stop()
- 쓰레드의 실행을 일시정지(suspend), 재개(resume), 완전정지(stop) 시킨다.
- suspend(), resume(), stop()은 교착상태에 빠지기 쉬워서 deprecated되었다 -> 직접 구현해야함
🚕 join()
- 지정된 시간동안 특정 쓰레드가 작업하는 것을 기다린다.
- 예외처리를 해야한다 (InterruptedException이 발생하면 작업 재개)
🚕 yield()
- 남은 시간을 다음 쓰레드에게 양보하고 자신(현재 쓰레드)은 실행대기한다.
- yield()와 interrupt()를 적절히 사용하면, 응답성과 효율을 높일 수 있다.
🚋 출처
자바의 정석 책 & 유튜브
Author And Source
이 문제에 관하여(21.01.21-42일차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ham6482/21.01.21-42일차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)