클릭하세요 자바2 JDK 1.4
Download
Report
Transcript 클릭하세요 자바2 JDK 1.4
13장 : 쓰레드
© 대림 & SOA
www.clickjava.co.kr
클릭하세요 자바2 JDK 1.4
1
멀티쓰레딩
멀티태스킹
컴퓨터가 여러 개의 일을 동시에 하는 것을 의미
한 개의 프로세스가 한 개의 일을 맡고 있는 경우가 많음
멀티 쓰레딩
한 개의 프로세스 내에 여러 개의 일을 수행하는 조그만 모
듈들이 독립적으로 실행됨
프로세스내의 메모리를 공유함
© 대림 & SOA
www.clickjava.co.kr
클릭하세요 자바2 JDK 1.4
2
자바의 쓰레드 : Thread 클래스
자바에서는 쓰레드를 언어 차원에서 지원
사용법
1. Thread 클래스를 상속 후, run() 메서드를 오버라이딩
2. 해당 클래스의 인스턴스 생성후, start() 메서드를 호출
- 따라하기) p.391 ~ 392
run() 메서드와 start() 메서드의 관계
start() 메서드로 호출하여도 run() 메서드가 바로
실행되는 것이 아님
코드 1 실습
© 대림 & SOA
www.clickjava.co.kr
클릭하세요 자바2 JDK 1.4
3
자바의 쓰레드:Runnable 인터페이스
적용
다른 상위 클래스가 있는 경우에 쓰레드를 사용해
야 하는 경우에 이용됨
사용법
1. 클래스를 정의할때, Runnable 인터페이스를 구현한, 그리
고 run() 메서드를 구현해줌
2. 해당 클래스의 인스턴스 생성후, Thread 클래스의 생성자
의 인자로 넘겨줌. 그리고, 해당 Thread 클래스에서 start()
메서드를 호출함.
- 따라하기) p.395
코드 2 실습
© 대림 & SOA
www.clickjava.co.kr
클릭하세요 자바2 JDK 1.4
4
쓰레드의 제어
쓰레드의 상태도
쓰레드는 준비 상태, 실행정지, 실행, 종료로 구분
실행 정지는 대기, 슬립, 지연으로 세분화됨
대기 : 동기화 블록내에서 쓰레드 실행을 중지
슬립 : 쓰레드가 자고 있는 상태
지연 : 입출력 메서드 등의 종료가 일어나기까지 대기
© 대림 & SOA
www.clickjava.co.kr
클릭하세요 자바2 JDK 1.4
5
메서드 호출에 의한 쓰레드 제어
start() 메서드
run() 메서드/yield() 메서드
쓰레드를 준비 상태로 들어가게 함
실행상태에서 실행되는 메서드
yield()는 실행에서 준비로 쓰레드의 상태를 변경
sleep() 메서드
쓰레드의 실행을 중지시키고, 슬립 상태로 변경
슬립이 종료되면, 쓰레드는 준비 상태로 바뀜
© 대림 & SOA
www.clickjava.co.kr
클릭하세요 자바2 JDK 1.4
6
지연과 대기
지연(Blocked)
지연은 입출력 메서드 등을 호출하여,쓰레드의 실행이
정지됨
지연을 일으킨 메서드의 완료가 되면, 쓰레드는 다시
준비 상태로 들어감
대기(Waiting)
대기는 wait() 메서드를 쓰레드가 호출하는 경우에
외부에서 notify() 메서드에 의해 호출되기를 원하
는 경우임
© 대림 & SOA
www.clickjava.co.kr
클릭하세요 자바2 JDK 1.4
7
자원 공유와 동기화 메서드
자원 공유 문제
여러 개의 쓰레드는 동시에 1개의 자원에 접근이 가능하며,
1번에 1개의 쓰레드만 접근해야할 필요성이 있음.
동기화 메서드
synchronized 키워드
모니터
해당 메서드는 한번에 1개의 쓰레드만 접근 가능함
쓰레드가 객체 자체의 접근을 할 수 있는 권한임
코드 3 실습
동기화 코드 블록
임의의 객체 레퍼런스에 대해서, 코드 일부분을 동기화로
묶음
코드 4 실습
© 대림 & SOA
www.clickjava.co.kr
클릭하세요 자바2 JDK 1.4
8
wait(), notify(), notifyAll() 메서드
wait() 메서드
notify(), notifyAll() 메서드
특정 조건이 만족될 때까지 쓰레드를 정지해야 하는 경우에
호출됨
이 메서드를 호출하면, 쓰레드는 대기 상태가 됨
현재 대기 상태중인 쓰레드를 준비 상태로 바꿔줌
코드 5 실습
© 대림 & SOA
www.clickjava.co.kr
클릭하세요 자바2 JDK 1.4
9
우선권 제어
우선권
setPriority() 메서드를 이용해서, 쓰레드의 실행
권한을 조절할 수 있음
우선 순위가 높은 쓰레드는 자주 실행될 확률이 높
음
코드 6 실습
© 대림 & SOA
www.clickjava.co.kr
클릭하세요 자바2 JDK 1.4
10