제11장 프로세스와 쓰레드

Similar documents
PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - lec12 [호환 모드]

JAVA PROGRAMMING 실습 08.다형성

스레드를적용하지않은결과와스레드를적용한결과의비교 1) 두개의작업을스레드를사용하지않고수행한예 ) : 순차작업 class ThreadTest2 { System.out.print("-");// 화면에 - 를출력하는작업 System.out.print(" ");// 화면에 를출력

Microsoft PowerPoint - java2-lecture6.ppt [호환 모드]

스레드의우선순위 우선순위설정메소드 : void setpriority(int newpriority) newpriority 에설정할수있는등급 : 1( 가장낮은우선순위 ) 부터 10( 가장높은우선순위 ) 가장높은우선순위 : MAX_PRIORITY, 보통우선순위 : NORM_

(Microsoft PowerPoint - java2-lecture6.ppt [\310\243\310\257 \270\360\265\345])

Design Issues

PowerPoint Presentation

PowerPoint Presentation

Network Programming

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint Presentation

PowerPoint 프레젠테이션

비긴쿡-자바 00앞부속

Microsoft PowerPoint - 2강

JAVA PROGRAMMING 실습 09. 예외처리

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

Cluster management software

gnu-lee-oop-kor-lec06-3-chap7

슬라이드 1

PowerPoint Presentation

Microsoft PowerPoint - 04-UDP Programming.ppt

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Chap12

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

PowerPoint Presentation

Microsoft PowerPoint - RMI.ppt

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

PowerPoint 프레젠테이션

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint Presentation

PowerPoint 프레젠테이션

자바로

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

02 C h a p t e r Java

오버라이딩 (Overriding)

PowerPoint Presentation

JUNIT 실습및발표

Spring Boot

rmi_박준용_final.PDF

쉽게 풀어쓴 C 프로그래밍

JMF3_심빈구.PDF

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

No Slide Title

쉽게 풀어쓴 C 프로그래밊

PowerPoint Template

PowerPoint 프레젠테이션

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

쉽게

gnu-lee-oop-kor-lec11-1-chap15

JAVA PROGRAMMING 실습 07. 상속

5장.key

Microsoft PowerPoint - Lect04.pptx

int total = 0; for( int i=1; i<=5; i++ ) { for( int j=1; j<=i; i++ ) { total ++; System.out.println( total ); 대구분 : 객체와 Class 소구분 : 객체생성과사용 / Class 선언

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2

JVM 메모리구조

Microsoft PowerPoint - 13_UMLCoding(2010).pptx

쉽게 풀어쓴 C 프로그래밍

Java ~ Java program: main() class class» public static void main(string args[])» First.java (main class ) /* The first simple program */ public class

C++ Programming

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

9장.예외와 단정

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 05. 객체의 활용

05-class.key

PowerPoint Presentation

PowerPoint 프레젠테이션

교육자료

Spring Data JPA Many To Many 양방향 관계 예제

Microsoft PowerPoint - Java7.pptx

PowerPoint Template

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

Spring Boot/JDBC JdbcTemplate/CRUD 예제

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

PowerPoint Presentation

Microsoft PowerPoint - 03-TCP Programming.ppt

ThisJava ..

C++ Programming

슬라이드 1

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션

Java

4장.문장

09-interface.key

목차 JEUS EJB Session Bean가이드 stateful session bean stateful sample 가이드 sample source 결과확인 http session에

PowerPoint Presentation

Semantic Consistency in Information Exchange

Transcription:

제9장자바쓰레드

9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2

9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드 프로세스간의통신오버헤드 해결책 => 쓰레드 쓰레드 (thread) 실행될명령어들의연속 (a sequence of instructions to be executed) 쓰레드의장점 생성시적은오버헤드 주소공간을공유하기때문에자원공유가쉽고, 쓰레드간통신이쉬움 컨텍스트스위치시오버헤드가적음 자바 Thread 3

9.1 Thread 기초 (3/5) Thread 순차적으로동작하는문장들의단일집합 경량 (lightweight) 프로세스 다중처리기능 하나의프로그램에서하나이상의객체를생성하여실행할때 자바는스레드를지원하기위해 java.lang.thread 클래스제공 다수개의 CPU를가진컴퓨터에서다중스레드의실행 스레드 1 프로그램 스레드 2 스레드 3 프로그램 한개의 CPU 를가진컴퓨터에서다중스레드의실행 스레드 1 프로그램 스레드 2 스레드 3 프로그램 자바 Thread 4

9.1 Thread 기초 (4/5) 단일 Thread 전통적인프로세스 스케쥴링단위 = 프로세스 하나의 Class Instance 자바 Thread 5

9.1 Thread 기초 (5/5) 다중 Thread 하나의 Class Instance 에여러개의 thread 가존재 스케쥴링단위 = thread (Thread Class Instance) 자바 Thread 6

9.2 자바 Thread Class (1/3) 자바 Thread Class 종류 Thread 클래스 Runnable 인터페이스 자바 Class 상태도 자바 Thread 7

9.2 자바 Thread Class (2/3) JDK 는 Thread 를지원하는 java.lang.thread 클래스제공 Thread 를생성하기위해사용 4 개의생성자를제공 Thread() Thread(String s) Thread(Runnable r) Thread(Runnable r, String s) 자바 Thread 8

9.2 Java Thread 클래스의주요 method (3/3) 메소드이름 static void sleep(long msec) throws InterruptedException String getname() void setname(string s) void start() int getpriority() void setpriority(int p) boolean isalive() void join() throws InterruptedException void run() void suspend() 설명 msec에지정된밀리초 (milliseconds) 동안대기스레드의이름을반환스레드의이름을 s로설정스레드를시작시킨다. run() 메소드를호출스레드의우선순위를반환스레드의우선순위를 p값으로설정스레드가시작되었고아직끝나지않았으면 true를그렇지않으면 false를반환스레드가끝날때까지대기스레드가실행할부분을기술하는메소드하위클래스에서오버라이딩되어야한다스레드가일시정지된다. resume() 에의해다시시작될수 있다 자바 Thread 9

9.3 Thread 생명주기 - Java Thread instance 의생명주기 run() 실행 run() 종료 종료 new 생성 start() 실행가능상태 yield() 또는시간종료 interrupt() join() sleep() wait() 대기상태 대기 (join 할스레드가종료되기를기다림 ) join 스레드종료 대기 (sleep time 이끝나기를기다림 ) sleep time 종료 대기 (notify 신호를기다림 ) notify() notyfyall() 자바 Thread 10

9.4 Thread 생성과사용 (1/4) Thread를생성하는방법방법 1) Thread 클래스로부터직접상속받아 Thread를생성 Thread_Class extends Thread { } new Thread_Class; 수행할 thread object의생성 start(); : thread의시작 run() { } : thread의수행내용정의 방법 2) Runnable 인터페이스를사용하는방법 주로현재의클래스가이미다른클래스로부터상속받고있는경우 다중상속이되는경우는 Interfacce Class 를 Implement Thread_Class extends Other_class implements Runnable { } new Thread_Class; 수행할 thread object의생성 start(); : thread의시작 run() { } : thread의수행내용정의 자바 Thread 11

9.4 Thread 생성과사용 (2/4) 9.4.1 Thread 클래스이용 Thread 클래스로부터직접상속받아Thread를생성 Thread 클래스에서제공되는 run() 메소드를오버라이딩하여생성한 Thread를실행시킴 class MyThread extends Thread { // Thread 클래스로부터상속... MyThread me = new MyThread(); //Thread object 를생성 me.start(); // thread 를시작시킴... public void run() { // thread 가실행되는내용... // 상위클래스인 Thread 클래스의 run() 메소드를오버... // 라이딩하여스레드가수행하여야하는문장들을기술 }... } 자바 Thread 12

9.4 Thread 생성과사용 (3/4) 9.4.2 Runnable 인터페이스이용 현재의클래스가이미다른클래스로부터상속을받고있다면 Runnable 인터페이스를사용하여 thread를생성할수있다 Runnable 인터페이스는 JDK에의해제공되는라이브러리인터페이스이다 Runnable 인터페이스에는 run() 메소드만정의되어있다 public interface Runnable { } public void run(); 자바 Thread 13

9.4 Thread 생성과사용 (4/4) 예를들어, Applet 클래스로부터상속을받고있으므로인터페이스이용 class RunnableThead extends Applet implements Runnable {... RunnableThread ro = new RunnableThreas(); // 객체생성 Thread rt = new Thread(ro); // ro를매개변수로하여 thread 객체 rt를생성 rt.start(); // 스레드시작 public void run() {... // Runnable 인터페이스에정의된 run() 메소드를... // 오버라이딩하여스레드가수행할문장들을기술한다 }... } 자바 Thread 14

9.5 Thread 생성예제 (1/2) Thread 클래스로부터상속받는 Thread run() 메소드를재정의 예제 : MyTeam.java 동시에수행할 Thream 의생성및실행 Worker.java Thread 에필요한 run() 함수정의 자바 Thread 15

9.5 Thread 생성예제 (2/2) Runnable 인터페이스구현 예제 : TCarFactory.java TCarFactory Class 자체적으로수행할기능을정의하고있음. Operate() 함수부분 run() : Thread로실행부분을재작성 자바 Thread 16

9.6 Thread 종료 Thread 종료 쓰레드는 run() 메소드가끝나면, 종료된다 무한반복에서쓰레드를종료하는방법 반복문의조건을이용 while(stop == false) {... } break 이용 while(true) {... if(test) break; } 자바 Thread 17

쓰레드의일시중단 9.7 Thread 의동시성 suspend() 쓰레드를잠시중단시킴 resume() 중단된쓰레드를다시시작시킴 예제 : SuspendTest.java 7 ma = new Thread(this, " 마당쇠 "); 8 ma.start(); 9 try { 10 Thread.sleep(5000); 11 System.out.println(" 쓰레드를중지시킵니다."); 12 ma.suspend(); 13 Thread.sleep(3000); 14 System.out.println(" 쓰레드를다시시작시킵니다."); 15 ma.resume(); 자바 Thread 18

9.8 Thread Scheduling Thread 스케쥴링 우선순위선점 (preemptive) 방식 우선순위값 : 0 ~ 10 예제 : PriorityTest.java 13 Thread.currentThread().setPriority(Thread.MAX_PRIORITY); 14 ma.start(); 18 System.out.println(" 마당쇠우선순위를 +2 증가 "); 19 ma.setpriority(ma.getpriority() + 2); 20 Thread.sleep(3000); 21 System.out.println(" 돌쇠우선순위를 +4 증가 "); 22 dol.setpriority(dol.getpriority() + 4); 23 Thread.sleep(5000); 자바 Thread 19

9.9 Thread 동기화 동기화 synchronized 키워드사용 예제 : LockTest.java 23 public synchronized void docriticaljob() { 24 String name = Thread.currentThread().getName(); 25 System.out.print("[" + name + " t"); 26 try { 27 int time = (int)(math.random() * 2000); 28 Thread.sleep(time); 29 } catch(exception e) { } 30 System.out.println(" t" + name + "]"); 31 } 자바 Thread 20

9,10 Thread 응용예 생산자와소비자 Monitor Producer add(char c) eat( ) Consumer ADGHCE 자바 Thread 21