자바 5.0 프로그래밍.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

운영체제 Chapter 3 병형 프로세스 박요안.
11장 스레드.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
최윤정 Java 프로그래밍 클래스 상속 최윤정
제8장 쓰레드 프로그래밍.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
어서와 Java는 처음이지! 제16장 스레드.
Chapter 4 Multi-Threaded Socket
Java 10장. 다중 스레드 public class SumTest {
운영체제 4장 요약정리(CPU 스케줄링) 2A 박훈.
04 CPU 스케줄링 CPU Scheduling
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Java의 정석 제 12 장 쓰레드(thread) Java 정석 남궁성 강의
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
Multi-thread Programming
Multi-thread Programming
스레드란? 멀티 태스킹(muli-tasking)는 여러 개의 애플리케이션을 동시에 실행하여서 컴퓨터 시스템의 성능을 높이기 위한 기법 그림23-1. 병철 처리의 예.
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
Chapter 06 프로세스와 예약작업 관리 Solaris 1. 프로세스 관리
Multi-thread Programming
자바 5.0 프로그래밍.
Power Java 제14장 배치 관리자.
Sungkyunkwan University OS Project Dongkun Shin
Chapter 03 : 서블릿 ( Servlet ) 개요. chapter 03 : 서블릿 ( Servlet ) 개요.
03. 병행 프로세스 (Parallel Process)
10장. 예외처리.
Subject : Thread Written by: 김형근,류명운.
Operating Systems Chapter 03 프로세스 개념.
Operating Systems Chapter 03 프로세스 개념.
Method & library.
JA A V W. 03.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Subject : Thread Written by: 김형근,류명운.
29강 JAVA 스레드 - 스레드란? - 멀티스레드 문법 - synchronized Lecturer Kim Myoung-Ho
메모리 관리 & 동적 할당.
Chap10 다중 스레드 Section 1 : 스레드 개요 Section 2 : Thread 클래스와 스레드 생명주기
Go Lang 리뷰 이동은.
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
System.Threading Process / Thread SD50 – C# & .NET Platform.
데이터베이스실험실 석사 2학기 조정희 TCP/IP Socket Programming… 제 18장 윈도우 기반 쓰레드 사용하기 데이터베이스실험실 석사 2학기 조정희
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
자바 5.0 프로그래밍.
Power Java 제11장 상속.
CHAP 21. 전화, SMS, 주소록.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
( Windows Service Application Debugging )
병행프로세스의개요 주세호.
학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성. 학습목표 처음 만드는 비주얼 베이직 프로그램 프로그램 실행과 실행 파일 생성.
Multi-thread Programming
Chapter 17. 스레드.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
3. 모듈 (5장. 모듈).
발표자 : 이지연 Programming Systems Lab.
System Security Operating System.
Thread.
엔코더 프로그램 설명 // 쓰레드를 사용하기 때문에 변수와 핸들을 전역변수로 지정 HANDLE hDevice;
제8장 쓰레드 프로그래밍.
Power Java 제14장 배치 관리자.
스케줄링 2A 박남규.
자바 객체 지향 프로그래밍 Ps lab 김윤경.
CODE INJECTION 시스템B 김한슬.
Power Java 제23장 스레드.
교착 상태 해결 : 교착 상태 탐지 교착 상태 탐지(Deadlock Detection)
7 생성자 함수.
2. 프로세스 B 안우진 - 운영체제 -.
4.CPU스케줄링 교과명 : 운영체제 학 과 : 컴퓨터 소프트웨어 학 번 : 이 름 : 최 은 선
Presentation transcript:

자바 5.0 프로그래밍

chapter 11 : 자바 Thread

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

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

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

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

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

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

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

쓰레드 ( Thread ) Thread API

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

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

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

쓰레드 ( Thread ) main 쓰레드

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

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

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

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

쓰레드 ( Thread ) yield() 예제

쓰레드 ( Thread ) join() 예제

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

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

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

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

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

동기화 성능 향상 방법 자원공유와 동기화 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()을 호출한다.

자원공유와 동기화 예제

자원공유와 동기화 예제

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