Presentation is loading. Please wait.

Presentation is loading. Please wait.

자바 5.0 프로그래밍.

Similar presentations


Presentation on theme: "자바 5.0 프로그래밍."— Presentation transcript:

1 자바 5.0 프로그래밍

2 chapter 11 : 자바 Thread

3 학습목표 프로세스와 쓰레드 개념 쓰레드 생성방법 쓰레드 스케쥴링 sleep() , join() , yield() 동기화
wait() 와 notify()

4 정의 프로세스 구성요소 용어정리 프로세스 ( process ) CPU가 실행중인 프로그램을 의미한다.
Code 와 Data 로 구성된다. 용어정리 멀티프로세싱 : 하나 이상의 CPU에 의해서 여러 개의 프로그램이 실행되는 것. 멀티 프로그래밍 :하나의 CPU에서 여러 개의 프로그램이 실행되는 것. 멀티 태스킹 : 멀티 프로그래밍과 비슷한 개념으로 여러 개의 Job 을 동시에 병렬 처리 하는것.

5 정의 쓰레드 구성요소 용어정리 쓰레드 ( Thread ) 프로세스내에서 실행되는 세부 작업단위이다.
프로그램 CPU process …. thread 쓰레드 구성요소 프로세스의 Code 와 Data 로 구성된다. 용어정리 멀티 쓰레드 : 하나의 프로세스내에서 여러 개의 쓰레드가 병행 처리되는 것.

6 장단점 프로세스 실행 쓰레드 실행 쓰레드 ( Thread ) 장점 : 재사용과 데이터 공유
단점 : 공유자원에 대한 처리 ( Mutex 관리: 상호배제 ) 프로세스 실행 Code Data1 Code Data CPU Code Data2 Code Data3 process 구성 메모리 쓰레드 실행 Code Data CPU Code Data1 Data2 Data3 thread 구성 메모리

7 CPU 스케쥴링 쓰레드 ( Thread ) 정의 작업을 처리하기 위해서 프로세스에게 CPU 나 다른 처리기를 할당하는 정책.
종류 선점( preemptive) 스케쥴링 : 하나의 프로세스가 CPU를 차지하고 있을때 우선순위가 높은 다른 프로세스가 현재 프로세스를 중지시키고 자신이 CPU를 차지할 수 있는 정책. 비선점( Non-preemptive) 스케쥴링 : 하나의 프로세스가 CPU를 할당 받으면 다른 프로세스는 CPU를 점유하지 못하고 수행중인 프로세스가 끝날 때까지 기다리는 정책.

8 쓰레드 스케쥴링 자바쓰레드 특징 쓰레드 ( Thread ) 정의 멀티 쓰레드가 동작할 때 어떤 쓰레드를 먼저 수행할지를 결정
하는 작업. 쓰레드 스케쥴러 자바는 우선순위가 높은 쓰레드가 먼저 수행되는 선점형 스케쥴러를 사용한다. 보통은 선점형 과 비선점형을 혼합하여 동작한다. 자바쓰레드 특징 우선권 스케쥴링 쓰레드는 각각 상태가 존재한다. 멀티쓰레드로 동작된다.

9 생성방법 Runnable 인터페이스 쓰레드 ( Thread ) java.lang.Thread 이용
java.lang.Runnable 이용 Runnable 인터페이스

10 쓰레드 ( Thread ) Thread API

11 쓰레드 ( Thread ) 예제 : 쓰레드 작성 전

12 예제 : 쓰레드 작성 후 ( Thread 클래스 이용 )

13 예제 : 쓰레드 작성 후 ( Runnable 이용 )
쓰레드 ( Thread ) 예제 : 쓰레드 작성 후 ( Runnable 이용 )

14 쓰레드 ( Thread ) main 쓰레드

15 start() 메소드와 run() 메소드 관계
쓰레드 ( Thread ) start() 메소드와 run() 메소드 관계 쓰레드가 가지는 상태와 관련된다. 쓰레드가 가지는 상태와 관련된다. 쓰레드 상태 쓰레드 상태 Runnable 상태 : 쓰레드가 실행하기 위한 준비단계. Running 상태 : 스케쥴러에 의해 선택된 쓰레드가 실행하는 단계. Runnable (준비) Running (실행) New Dead 1. start()호출 3.스케쥴러에 의해 쓰레드가 선택( run() 호출) 2. 쓰레드가 준비한다. 4. 쓰레드가 실행 5. 쓰레드가 종료

16 쓰레드 상태 쓰레드 ( Thread ) Runnable 상태 : 쓰레드가 실행하기 위한 준비단계.
Running 상태 : 스케쥴러에 의해 선택된 쓰레드가 실행하는 단계. Blocked 상태 : 쓰레드가 작업을 완수하지 못하고 잠시 작업을 멈추는 단계. Runnable (준비) Running (실행) New Dead 1. start()호출 3.스케쥴러에 의해 쓰레드가 선택( run() 호출) 2. 쓰레드가 준비한다. 4. 쓰레드가 실행 Blocked (대기) 5. 쓰레드가 완료되지 못하고 대기상태로 간다. -sleep(), yield(),join() 6. 대기상태의 쓰레드는 다시 Runnable 상태로 간다.

17 sleep( long millis ) yield() join() 쓰레드 ( Thread )
다른 쓰레드에게 running할 기회를 주기 위해서 사용한다. 기아상태에 빠지는 것을 방지할 수 있다. Thread.sleep( 1/1000 초 ); 주어진 시간동안 대기상태에 존재한다. yield() 우선순위가 같은 쓰레드에게 running 할 기회를 줄때 사용한다. Thread.yield(); join() join() 메소드를 호출한 쓰레드가 종료될 때까지 현재 running 된 쓰레드가 대기상태에 존재한다. thread변수.join();

18 쓰레드 ( Thread ) sleep( long millis ) 예제

19 쓰레드 ( Thread ) yield() 예제

20 쓰레드 ( Thread ) join() 예제

21 임계영역 ( Critical Section )
자원공유와 동기화 임계영역 ( Critical Section ) 두개 이상의 쓰레드에서 동시에 수행되면 안되는 영역. 예를 들어 좌변기 ( 임계영역 ) , 사람 ( 쓰레드 ) 동기화 공유영역에 둘 이상의 쓰레드가 접근할 때 발생되는 문제점을 해결. Mutex ( 상호배제 ) : Mutual Exclusion Busy wait : 자원을 사용할 수 있는지 계속적으로 확인. Lock / sleep : 자원을 사용할 수 없다면 사용할 수 있을 때까지 재워둔다. 세마포어 자바의 동기화 모든 객체에 있는 Lock 을 이용한다. Lock이란 공유객체에 여러 쓰레드가 동시에 접근하지 못하도록 하기 위한것으로 객체가 heap 메모리에 생성될때 자동으로 만들어진다. 쓰레드는 Lock을 가져야 running 될수 있다.

22 자바의 동기화 방법 자원공유와 동기화 synchronized 키워드 이용한다.
메소드 modifier 로 지정하는 방법 : 메소드 전체가 동기화된다. public synchronzied void go() { … } synchronized 코드 블록을 이용하는 방법 : 일부분만 동기화된다. public void go(){ .. synchronized( 공유객체){ }

23 자원공유와 동기화 예제 : 동기화 전

24 자원공유와 동기화 예제 : 동기화 후

25 자원공유와 동기화 Runnable (준비) Running (실행) Blocked (대기) Lock’s Pool Dead New
1. start()호출 3.스케쥴러에 의해 쓰레드가 선택( run() 호출) 2. 쓰레드가 준비한다. 4. 쓰레드가 실행 ( Lock 유무체크 ) Blocked (대기) Lock’s Pool 5. Lock이 없는 쓰레드

26 동기화 성능 향상 방법 자원공유와 동기화 busy wait 방법은 성능이 떨어진다.
Lock / sleep 방법으로 동기화 성능을 향상시킨다. wait() 메소드와 notity() 메소드를 이용한다. Runnable (준비) Running (실행) New Dead 1. start()호출 3.스케쥴러에 의해 쓰레드가 선택( run() 호출) 2. 쓰레드가 준비한다. 4. 쓰레드가 실행 ( Lock를 가진 쓰레드가 wait() 호출한다.) Blocked (대기) Lock’s Pool 5. 쓰레드가 wait된다. Wait 7. notify() 가 호출 됐을때 6. Lock을 가진 쓰레드가 작업을 끝마치고 notify()을 호출한다.

27 자원공유와 동기화 예제

28 자원공유와 동기화 예제

29 sleep() , join() , yield() wait() , notify()
요약 정리 프로세스와 쓰레드 동기화 sleep() , join() , yield() wait() , notify()


Download ppt "자바 5.0 프로그래밍."

Similar presentations


Ads by Google