- 스레드 이름
: 스레드는 자신의 이름 가지고 있음. 디버깅 할 때 어떤 스레드가 어떤 작업 하는지 조사할 목적으로 가끔 사용
thread.setName("스레드 이름"); -> 스레드 이름 설정
thread.getName(); -> 스레드 이름 가져옴
// 위 두개는 인스턴스 메소드 -> 스레드 객체의 참조 필요
Thread thread = Thread.currentThread(); -> 스레드 객체 참조 가지고 있지 않으면, 정적 메소드인 currentThread() 이용하여 실행하는 현재 스레드 참조 가능
- 멀티 스레드는 동시성, 병렬성으로 실행됨
- 동시성 : 멀티 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가면서 실행하는 성질
- 병렬성 : 멀티 작업을 위해 멀티 코어에서 개별 스레드를 동시에 실행하는 성질
- 스레드 스케줄링
스레드의 개수 > 코어의 개수 -> 스레드를 어떤 순서에 의해 동시성으로 실행할 것인가를 결정해야 함
스레드 스케줄링에 의해 스레드들은 아주 짧은 시간에 번갈아가면서 run()메소드를 조금씩 실행함
1. 우선 순위 방식 : 우선 순위가 높은 스레드가 실행 상태를 더 많이 가지도록 스케줄링 하는 것 -> 우선 순위 번호 부여할 수 있기 때문에 개발자가 코드로 제어 가능
1 - 10까지 부여되는데 1 : 제일 낮음. 우선 순위 부여 X 이면 기본적으로 5의 우선순위 할당
thread.setPriority() 메소드 : 우선순위 변경 가능
ex) thread.setPriority(Thread.MAX_PRIORITY = 10 / .NORM_PRIORITY = 5/ .MIN_PRIORITY = 1);
다른 스레드에 비해 실행 기회 많이 주고 싶으면 우선 순위 높게 -> 최소 5개 이상의 스레드가 실행되어야 우선순위 영향 받음
2. 순환 할당 방식 : 시간 할당량을 정해서 하나의 스레드를 정해진 시간만큼 실행하고 다시 다른 스레드를 실행하는 방식 -> JVM에 의해 정해지기 때문에 코드로 제어 불가
-<이것이 자바다1>. 한빛 미디어