클릭하세요 자바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