Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java의 정석 제 12 장 쓰레드(thread) Java 정석 남궁성 강의

Similar presentations


Presentation on theme: "Java의 정석 제 12 장 쓰레드(thread) Java 정석 남궁성 강의"— Presentation transcript:

1 Java의 정석 제 12 장 쓰레드(thread) Java 정석 2009. 7. 31 남궁성 강의
Chapter 12. 쓰레드(thread) Java의 정석 제 12 장 쓰레드(thread) 남궁성 강의

2 1.1 프로세스와 쓰레드(process & thread) (1)
Java 정석 Chapter 12. 쓰레드(thread) 1.1 프로세스와 쓰레드(process & thread) (1) ▶ 프로그램 : 실행 가능한 파일(HDD) ▶ 프로세스 : 실행 중인 프로그램(메모리) 2 2

3 1.1 프로세스와 쓰레드(process & thread) (2)
Java 정석 Chapter 12. 쓰레드(thread) 1.1 프로세스와 쓰레드(process & thread) (2) ▶ 프로세스 : 실행 중인 프로그램, 자원(resources)과 쓰레드로 구성 ▶ 쓰레드 : 프로세스 내에서 실제 작업을 수행. 모든 프로세스는 하나 이상의 쓰레드를 가지고 있다. 프로세스 : 쓰레드 = 공장 : 일꾼 ▶ 싱글 쓰레드 프로세스 = 자원+쓰레드 쓰레드(일꾼) 프로세스(공장) ▶ 멀티 쓰레드 프로세스 = 자원+쓰레드+쓰레드+…+쓰레드 3 3

4 vs. Java 1.2 멀티프로세스 vs. 멀티쓰레드 정석 “하나의 새로운 프로세스를 생성하는 것보다
Chapter 12. 쓰레드(thread) 1.2 멀티프로세스 vs. 멀티쓰레드 “하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 쓰레드를 생성하는 것이 더 적은 비용이 든다.” - 2 프로세스 1 쓰레드 vs. 1 프로세스 2 쓰레드 vs. 4 4

5 “프로그래밍할 때 고려해야 할 사항들이 많다.”
Java 정석 Chapter 12. 쓰레드(thread) 1.3 멀티쓰레드의 장단점 “많은 프로그램들이 멀티쓰레드로 작성되어 있다. 그러나, 멀티쓰레드 프로그래밍이 장점만 있는 것은 아니다.” 장점 - 자원을 보다 효율적으로 사용할 수 있다. 사용자에 대한 응답성(responseness)이 향상된다. 작업이 분리되어 코드가 간결해 진다. “여러 모로 좋다.” 단점 동기화(synchronization)에 주의해야 한다. 교착상태(dead-lock)가 발생하지 않도록 주의해야 한다. 각 쓰레드가 효율적으로 고르게 실행될 수 있게 해야 한다. “프로그래밍할 때 고려해야 할 사항들이 많다.” 5 5

6 Java 1.4 쓰레드의 구현과 실행 정석 의 Chapter 12. 쓰레드(thread) 6 6
1.4 쓰레드의 구현과 실행 6 6

7 Java 1.5 start() & run() 정석 의 Chapter 12. 쓰레드(thread) 7 7
1.5 start() & run() 7 7

8 Java 1.6 싱글쓰레드 vs. 멀티쓰레드(1) 정석 ▶ 싱글쓰레드 ▶ 멀티쓰레드 의
Chapter 12. 쓰레드(thread) 1.6 싱글쓰레드 vs. 멀티쓰레드(1) ▶ 싱글쓰레드 ▶ 멀티쓰레드 A B t(시간) t(시간) B A A B t(시간) 8 8

9 Java 1.6 싱글쓰레드 vs. 멀티쓰레드(2) 정석 ▶ 싱글쓰레드 ▶ 멀티쓰레드 의
Chapter 12. 쓰레드(thread) 1.6 싱글쓰레드 vs. 멀티쓰레드(2) A B t(시간) ▶ 싱글쓰레드 사용자 입력을 기다리는 구간 t(시간) A B ▶ 멀티쓰레드 9 9

10 1.7 쓰레드의 우선순위(priority of thread)
Java 정석 Chapter 12. 쓰레드(thread) 1.7 쓰레드의 우선순위(priority of thread) “작업의 중요도에 따라 쓰레드의 우선순위를 다르게 하여 특정 쓰레드가 더 많은 작업시간을 갖도록 할 수 있다. ” t(시간) B A ▶ 우선순위가 같은 경우 ▶ A의 우선순위가 높은 경우 t(시간) A B 10 10

11 Java 1.8 쓰레드 그룹(ThreadGroup) 정석 - 서로 관련된 쓰레드를 그룹으로 묶어서 다루기 위한 것
정석 Chapter 12. 쓰레드(thread) 1.8 쓰레드 그룹(ThreadGroup) - 서로 관련된 쓰레드를 그룹으로 묶어서 다루기 위한 것 - 모든 쓰레드는 반드시 하나의 쓰레드 그룹에 포함되어 있어야 한다. - 쓰레드 그룹을 지정하지 않고 생성한 쓰레드는 ‘main쓰레드 그룹’에 속한다. - 자신을 생성한 쓰레드(조상 쓰레드)의 그룹과 우선순위를 상속받는다. 11 11

12 Java 1.9 데몬 쓰레드(daemon thread) 정석
정석 Chapter 12. 쓰레드(thread) 1.9 데몬 쓰레드(daemon thread) - 일반 쓰레드(non-daemon thread)의 작업을 돕는 보조적인 역할을 수행. - 일반 쓰레드가 모두 종료되면 자동적으로 종료된다. - 가비지 컬렉터, 자동저장, 화면자동갱신 등에 사용된다. - 무한루프와 조건문을 이용해서 실행 후 대기하다가 특정조건이 만족되면 작업을 수행하고 다시 대기하도록 작성한다. * setDaemon(boolean on)은 반드시 start()를 호출하기 전에 실행되어야 한다. 그렇지 않으면 IllegalThreadStateException이 발생한다. 12 12

13 Java 1.10 쓰레드의 실행제어 정석 의 Chapter 12. 쓰레드(thread)
1.10 쓰레드의 실행제어 * resume(), stop(), suspend()는 쓰레드를 교착상태로 만들기 쉽기 때문에 deprecated되었다. 13 13

14 1.11 쓰레드의 상태(state of thread)
Java 정석 Chapter 12. 쓰레드(thread) 1.11 쓰레드의 상태(state of thread) 14 14

15 Java 1.12 쓰레드의 실행제어 – Example1 정석 의 Chapter 12. 쓰레드(thread) 15 15
1.12 쓰레드의 실행제어 – Example1 15 15

16 Java 1.12 쓰레드의 실행제어 – Example2 정석 의 Chapter 12. 쓰레드(thread) 16 16
1.12 쓰레드의 실행제어 – Example2 16 16

17 1.13 쓰레드의 동기화 - synchronized
Java 정석 Chapter 12. 쓰레드(thread) 1.13 쓰레드의 동기화 - synchronized - 한 번에 하나의 쓰레드만 객체에 접근할 수 있도록 객체에 락(lock)을 걸어서 데이터의 일관성을 유지하는 것. 17 17

18 Java 1.13 쓰레드의 동기화 - Example 정석 의 Chapter 12. 쓰레드(thread)
1.13 쓰레드의 동기화 - Example ▶Synchronized없을 때 ▶Synchronized있을 때 18 18

19 1.14 쓰레드의 동기화 – wait(), notify(), notifyAll()
Java 정석 Chapter 12. 쓰레드(thread) 1.14 쓰레드의 동기화 – wait(), notify(), notifyAll() - 동기화의 효율을 높이기 위해 wait(), notify()를 사용. - Object클래스에 정의되어 있으며, 동기화 블록 내에서만 사용할 수 있다. ▶wait() – 객체의 lock을 풀고 해당 객체의 쓰레드를 waiting pool에 넣는다. ▶notify() – waiting pool에서 대기중인 쓰레드 중의 하나를 깨운다. ▶notifyAll() – waiting pool에서 대기중인 모든 쓰레드를 깨운다. 19 19

20 Java 1.14 쓰레드의 동기화 – Example2 정석 의 Chapter 12. 쓰레드(thread) 20 20
1.14 쓰레드의 동기화 – Example2 20 20

21 1.14 쓰레드의 동기화 – Example2-1 improved
Java 정석 Chapter 12. 쓰레드(thread) 1.14 쓰레드의 동기화 – Example2-1 improved 21 21

22 감사합니다. http://www.javachobo.com Java 정석
정석 Chapter 12. 쓰레드(thread) 감사합니다. 더 많은 동영상강좌를 아래의 사이트에서 구하실 수 있습니다. 이 동영상강좌는 비상업적 용도일 경우에 한해서 저자의 허가없이 배포하실 수 있습니다. 그러나 일부 무단전제 및 변경은 금지합니다. 관련문의 : 남궁성


Download ppt "Java의 정석 제 12 장 쓰레드(thread) Java 정석 남궁성 강의"

Similar presentations


Ads by Google