- 스레드 이름 

: 스레드는 자신의 이름 가지고 있음. 디버깅 할 때 어떤 스레드가 어떤 작업 하는지 조사할 목적으로 가끔 사용


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>. 한빛 미디어 

'JAVA' 카테고리의 다른 글

멀티 스레드_5  (0) 2019.06.19
멀티 스레드_4  (0) 2019.06.19
멀티 스레드_2  (0) 2019.06.18
멀티 스레드_1  (0) 2019.06.18
기본 API 클래스  (0) 2019.06.18

+ Recent posts