□ 자바 가상머신은 스레드의 우선순위 값에 따라 CPU 사용을 분배하는 Fixed Priority Scheduling(고정 우선순위 스케줄링) 알고리즘 사용. 우선순위가 높게 설정된 스레드가 가장 먼저 실행되고 우선순위가 낮은 스레드는 높은 우선순위를 가진 스레드를 모두 처리된 후 실행
□ 우선순위 범위는 1에서 10까지 10단계로 나누어져 있으며 최소 우선순위, 기본 우선순위, 최대 우선순위는 다음과 같이 상수로 정해져 있다.
java.lang.Thread.MIN_PRIORITY
|
1
|
java.lang.Thread.NORM_PRIORITY
|
5
|
java.lang.Thread.MAX_PRIORITY
|
10
|
□ 스레드는 생성될 때 자신을 생성한 부모 스레드로부터 우선순위를 상속. 우선순위 값을 변경하거나 설정하기 위해서는 다음과 같은 메소드 사용
setPriority(int p)
|
현재 스레드의 우선순위를 인자 p로 설정하기 위한 메소드
|
getPriority()
|
현재 스레드의 우선순위를 반환하는 메소드
|
□ 선점형 방식 : 현재 실행중인 스레드보다 우선순위가 높은 스레드가 들어오면 실행중인 스레드를 대기상태로 만들고 우선순위가 높은 스레드를 실행. ex) Solaris JVM
□ 시분할 방식 : 현재 스레드가 높은 우선순위를 가지고 있더라도 낮은 우선순위를 가지고 있는 스레드도 실행될 수 있도록 일정한 시간이 지나면 다른 스레드에게 CPU 시간을 양보하는 방식. ex) Windows JVM
7.5 동기화
□ 동기화 : 여러 스레드가 사용하는 자원의 상태를 일치시켜 예측 가능한 상태로 만듬
□ synchronized 키워드 : 동기화를 지원. 메소드에 사용하게 되면 오직 한 개의 스레드만 해당 메소드에 접근 할 수 있음. 동기화된 메소드가 사용된 객체는 locking(잠금) 상태에 있다고 하며 다른 스레드가 이미 사용 중인 동기화 메소드에 접하려고 하면 그 스레드는 동기화 메소드의 잠금이 해지될 때 까지 대기 상태에 있음
7.6 wait(), notify(), notifyAll()
□ wait(), notify(),notifyAll() 메소드는 동기화를 지원하기 위한 메소드로서 하나의 스레드가 다른 스레드와 통신을 할 수 있도록 지원. 이 메소드들은 synchronized 키워드가 사용된 메소드나 블록에 사용
※ wait(), notify(), notifyAll(), finalize() 메소드는 java.lang.Object 클래스의 멤버
댓글 없음:
댓글 쓰기
국정원의 댓글 공작을 지탄합니다.