SlideShare a Scribd company logo
Subject : Thread
Written by: 김형근,류명운
본 발표 내용은 스레드의 개념과 통신 프로그램에서 사용되는 스레드 내용입니다.
Process
Multi Thread Single Thread
OS
스레드의 개념 이해
자바에서의 스레드란?
자바는 비동기적 작동 방식(독립스레드)에 대한 개념이 없음
하지만, 자바가 실행되는 기반인 자바가상머신(JVM) 자체가 하나의 프로세스
이기 때문에 언어적 차원에서 스레드의 동기화 지원이 가능
간단한 프로그램을 작성할 때에도 스레드를 사용
대부분의 API 클래스들은 이미 내부적으로 스레드를 구현하여 사용 - ex)소켓
따라서 자바에서의 스레드란 JVM(Java Virtual Machine)에 의
해 호출될 수 있는 가장 작은단위
자바에서의 스레드 종류
메인스레드
(시스템스레드)
워킹스레드
(사용자스레드)
자바에서의 스레드 종류
단일스레드
(Single-thread)
멀티스레드
(Multi-thread)
자바에서의 스레드 종류
독립스레드
종속스레드
(데몬스레드)
자바에서의 스레드 Q&A
자바에서의 스레드 중 JVM에 의해 기본적으로 생성되는 스레드 외에 사용자
에 의해 생성되는 스레드는 어떠한 경우인가?
-> 사용자가 프로그램을 개발함에 있어 멀티스레드를 구현하기 위해
-> 독립스레드: 멀티스레드 프로그램을 위해
종속스레드: 독립스레드를 돕기 위해
사용자에 의해 생성되는 스레드는 어떠한 종류가 있으며, 각 스레드는 어떠한
경우에 사용되는가?
Thread
1. Thread Mㅔthod
2. Thread ㄹifecycle
3. SiㅇgleThreadMulㅌi Thread
4. Thread in Chat ㅍrogram
Thread의 메소드 내용
void run() JVM에 의해 호출
개발자는 반드시 오버라이딩
void start() JVM에 스레드 실행 시작
Run() 실행
void interrupt() 스레드 강제종료
Static void yield()
다른 스레드에게 실행 양보
스케드 스케줄링 시행->
다른 스레드 선택하여 실행
void join() 스레드가 종료할 때까지 기다린다.
Static void
sleep(long mills)
쓰레드는 mills 시간 동안 잔다.
Mills의 단위는 밀리초
void
setPriority(int n)
스레드의 우선순위 값을 n 변경
Thread Mㅔthod
Thread A = new Thread()
NEW(탄생)
RUNNABLE
(준비)
RUNNABLE
(running, 실행 중)
Run() 또는 JVM
Scheduling
yield()
실행
종료
BLOCK(봉쇄)
Synchronized
or
I/O 작업요청
Join
TIME_WAITING
Join()
TIME_WAITING
(시간대기)
Sleep()
WAITTING(대기)
Object.wait()
Object.notify();
Object.notifyAll();
ThreadB
타임아웃
interrupt
I/O작업완료
타임아웃
interrupt
start()
Thread ㄹifecycle
ThreadinChatㅍrogram
ThreadinChatㅍrogram
ThreadinChatㅍrogram
ThreadinChatㅍrogram
참고자료:http://deviant86.tistory.com/240
RㅔFERENCE
http://deviant86.tistory.com/240
http://noon.tistory.com/1450
http://yellowvirus.tistory.com/16
소스예제
운영체제론
http://blog.naver.com/highkrs/220268316736메인스레드 및 워킹스레드 관련
http://chihun0528.blog.me/90104286935데몬스레드 관련
http://terms.naver.com/네이버지식백과/각 키워드의 개념
http://cafe.naver.com/ccjmaster/112자바스레드에 대하여
http://cafe.naver.com/iwgg/1397자바가상머신 및 자바플랫폼에 대하여
http://happyourlife.tistory.com/m/post/133#자바스레드 관련 가장많은자료참고
자바 병행 프로그램의 모니터링 시스템석사졸업논문, 숙명여자대학원, 문세원
http://kiwi99.tistory.com/12자바 스레드 관련
하비 디텔, 폴 디텔, 데이빗쇼픈스 저,
송경희 역/ 김명섭 감수

More Related Content

Viewers also liked

Viewers also liked (12)

[명우니닷컴]청소년 패션 문화
[명우니닷컴]청소년 패션 문화[명우니닷컴]청소년 패션 문화
[명우니닷컴]청소년 패션 문화
 
[명우니닷컴]웹보안채팅 Isyouchat
[명우니닷컴]웹보안채팅 Isyouchat[명우니닷컴]웹보안채팅 Isyouchat
[명우니닷컴]웹보안채팅 Isyouchat
 
[명우니닷컴] 비정상트래픽 분석 논문 요약 발표
[명우니닷컴] 비정상트래픽 분석 논문 요약 발표[명우니닷컴] 비정상트래픽 분석 논문 요약 발표
[명우니닷컴] 비정상트래픽 분석 논문 요약 발표
 
[명우니닷컴] 스마트폰 질병 및 중독 예방 시스템 논문 요약 발표
[명우니닷컴] 스마트폰 질병 및 중독 예방 시스템 논문 요약 발표[명우니닷컴] 스마트폰 질병 및 중독 예방 시스템 논문 요약 발표
[명우니닷컴] 스마트폰 질병 및 중독 예방 시스템 논문 요약 발표
 
[명우니닷컴] 인터넷과 딥웹 (Internet and DeepWeb
[명우니닷컴] 인터넷과 딥웹 (Internet and DeepWeb[명우니닷컴] 인터넷과 딥웹 (Internet and DeepWeb
[명우니닷컴] 인터넷과 딥웹 (Internet and DeepWeb
 
[명우니닷컴] PWR3 중가고사 대체 논문 발표자료(스마트폰 사용자패턴을 수집 및 분석하여 스마트폰 중독지수 체크시스템)
[명우니닷컴] PWR3 중가고사 대체 논문 발표자료(스마트폰 사용자패턴을 수집 및 분석하여 스마트폰 중독지수 체크시스템)[명우니닷컴] PWR3 중가고사 대체 논문 발표자료(스마트폰 사용자패턴을 수집 및 분석하여 스마트폰 중독지수 체크시스템)
[명우니닷컴] PWR3 중가고사 대체 논문 발표자료(스마트폰 사용자패턴을 수집 및 분석하여 스마트폰 중독지수 체크시스템)
 
Arduino入門(kjcode)
Arduino入門(kjcode)Arduino入門(kjcode)
Arduino入門(kjcode)
 
Objective-C에서 멀티스레드 사용하기
Objective-C에서 멀티스레드 사용하기Objective-C에서 멀티스레드 사용하기
Objective-C에서 멀티스레드 사용하기
 
HTTP 완벽가이드 - ch5. web server
HTTP 완벽가이드 - ch5. web serverHTTP 완벽가이드 - ch5. web server
HTTP 완벽가이드 - ch5. web server
 
Java(3/4)
Java(3/4)Java(3/4)
Java(3/4)
 
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬
AWS 클라우드 기반 확장성 높은 천만 사용자 웹 서비스 만들기 - 윤석찬
 
AWS re:Invent 특집(3) – Amazon 인공 지능(AI) 서비스 및 AWS 딥러닝 프레임웍 활용 (윤석찬)
AWS re:Invent 특집(3) – Amazon 인공 지능(AI) 서비스 및 AWS 딥러닝 프레임웍 활용 (윤석찬)AWS re:Invent 특집(3) – Amazon 인공 지능(AI) 서비스 및 AWS 딥러닝 프레임웍 활용 (윤석찬)
AWS re:Invent 특집(3) – Amazon 인공 지능(AI) 서비스 및 AWS 딥러닝 프레임웍 활용 (윤석찬)
 

Similar to [명우니닷컴]자바 스레드에 대해

자바와 사용하기2
자바와 사용하기2자바와 사용하기2
자바와 사용하기2
destinycs
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
Daum DNA
 
Clojure/Chapter3
Clojure/Chapter3Clojure/Chapter3
Clojure/Chapter3
destinycs
 
1. let's start java
1. let's start java1. let's start java
1. let's start java
SeonMan
 

Similar to [명우니닷컴]자바 스레드에 대해 (20)

java_1장.pptx
java_1장.pptxjava_1장.pptx
java_1장.pptx
 
java_1장
java_1장java_1장
java_1장
 
java_1장.pptx
java_1장.pptxjava_1장.pptx
java_1장.pptx
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8
 
자바와 사용하기2
자바와 사용하기2자바와 사용하기2
자바와 사용하기2
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
 
Node week1
Node week1Node week1
Node week1
 
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
 
Clojure/Chapter3
Clojure/Chapter3Clojure/Chapter3
Clojure/Chapter3
 
Java 그쪽 동네는
Java 그쪽 동네는Java 그쪽 동네는
Java 그쪽 동네는
 
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
 
[오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core [오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core
 
스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동스프링 코어 강의 1부 - 봄 맞이 준비 운동
스프링 코어 강의 1부 - 봄 맞이 준비 운동
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsRyan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
 
1. let's start java
1. let's start java1. let's start java
1. let's start java
 
자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)자바 직렬화 (Java serialization)
자바 직렬화 (Java serialization)
 
[ES6] 1. let과 const
[ES6] 1. let과 const[ES6] 1. let과 const
[ES6] 1. let과 const
 
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
테스터도 알아야 할 웹 개발(테스트 교육 3장 1절 부분발췌)
 
자바가 디비와 사귀기 까지 벌어지는 일들
자바가 디비와 사귀기 까지 벌어지는 일들자바가 디비와 사귀기 까지 벌어지는 일들
자바가 디비와 사귀기 까지 벌어지는 일들
 
Things Happend between JDBC and MySQL
Things Happend between JDBC and MySQLThings Happend between JDBC and MySQL
Things Happend between JDBC and MySQL
 

More from Myeongun Ryu

More from Myeongun Ryu (11)

[명우니닷컴]설패최종발표
[명우니닷컴]설패최종발표[명우니닷컴]설패최종발표
[명우니닷컴]설패최종발표
 
[명우니닷컴]졸작최종계획
[명우니닷컴]졸작최종계획[명우니닷컴]졸작최종계획
[명우니닷컴]졸작최종계획
 
Iot 천xx,이xx,황xx(독립형사방댐원격관리시스템,비콘활용시스템,iot home서비스+체온유지를위한센서스티커)
Iot 천xx,이xx,황xx(독립형사방댐원격관리시스템,비콘활용시스템,iot home서비스+체온유지를위한센서스티커)Iot 천xx,이xx,황xx(독립형사방댐원격관리시스템,비콘활용시스템,iot home서비스+체온유지를위한센서스티커)
Iot 천xx,이xx,황xx(독립형사방댐원격관리시스템,비콘활용시스템,iot home서비스+체온유지를위한센서스티커)
 
Iot 지xx,김xx,장xx(dot점자스마트워치,gest,i pavement+가상현실)
Iot 지xx,김xx,장xx(dot점자스마트워치,gest,i pavement+가상현실)Iot 지xx,김xx,장xx(dot점자스마트워치,gest,i pavement+가상현실)
Iot 지xx,김xx,장xx(dot점자스마트워치,gest,i pavement+가상현실)
 
Iot 전xx,김xx,조xx(yakon-h,liftware,novus+i-wallet스마트지갑)
Iot 전xx,김xx,조xx(yakon-h,liftware,novus+i-wallet스마트지갑)Iot 전xx,김xx,조xx(yakon-h,liftware,novus+i-wallet스마트지갑)
Iot 전xx,김xx,조xx(yakon-h,liftware,novus+i-wallet스마트지갑)
 
Iot 임xx,오xx,이xx(블루링크스마트컨트롤,스마트안전모,ddp+체온에너지기반웨어러블디바이스)
Iot 임xx,오xx,이xx(블루링크스마트컨트롤,스마트안전모,ddp+체온에너지기반웨어러블디바이스)Iot 임xx,오xx,이xx(블루링크스마트컨트롤,스마트안전모,ddp+체온에너지기반웨어러블디바이스)
Iot 임xx,오xx,이xx(블루링크스마트컨트롤,스마트안전모,ddp+체온에너지기반웨어러블디바이스)
 
Iot 안xx,오xx,홍xx(moblo,way,trunkster+매일매일스마트한치아분석grut치아)
Iot 안xx,오xx,홍xx(moblo,way,trunkster+매일매일스마트한치아분석grut치아)Iot 안xx,오xx,홍xx(moblo,way,trunkster+매일매일스마트한치아분석grut치아)
Iot 안xx,오xx,홍xx(moblo,way,trunkster+매일매일스마트한치아분석grut치아)
 
Iot 김xx,김xx,김xx(아마존대시,네스트,스마트미러+스마트케어변기)
Iot 김xx,김xx,김xx(아마존대시,네스트,스마트미러+스마트케어변기)Iot 김xx,김xx,김xx(아마존대시,네스트,스마트미러+스마트케어변기)
Iot 김xx,김xx,김xx(아마존대시,네스트,스마트미러+스마트케어변기)
 
[명우니닷컴]하이브리드기법과 중간자공격
[명우니닷컴]하이브리드기법과 중간자공격[명우니닷컴]하이브리드기법과 중간자공격
[명우니닷컴]하이브리드기법과 중간자공격
 
[명우니닷컴]S key 인증과정
[명우니닷컴]S key 인증과정[명우니닷컴]S key 인증과정
[명우니닷컴]S key 인증과정
 
[명우니닷컴] 2번째 숙제 - 두 정수의 연산 (공연 예약 시스템)
[명우니닷컴] 2번째 숙제 - 두 정수의 연산 (공연 예약 시스템)[명우니닷컴] 2번째 숙제 - 두 정수의 연산 (공연 예약 시스템)
[명우니닷컴] 2번째 숙제 - 두 정수의 연산 (공연 예약 시스템)
 

[명우니닷컴]자바 스레드에 대해

Editor's Notes

  1. 여태까지 우리는 자바의 스레드를 사용하여 프로그램을 짜왔음. -> main 메소드(main 스레드) 하지만 독립스레드란 메인스레드 외에 별도로 존재하는 스레드를 뜻한다. 이와 좀 다른 데몬스레드는 다른 스레드를 도와주기 위해 만들어지는 스레드이다. 데몬스레드의 특징은 메인스레드가 죽으면 같이 죽는다는 것이다. 데몬스레드는 스스로는 어떤 일도 수행할 수 없으며 다른 스레드와 같이 동작한다. 이러한 데몬스레드는 JVM에 의해 기본적으로 제공되는
  2. 여태까지 우리는 자바의 스레드를 사용하여 프로그램을 짜왔음. -> main 메소드(main 스레드) 하지만 독립스레드란 메인스레드 외에 별도로 존재하는 스레드를 뜻한다. 이와 좀 다른 데몬스레드는 다른 스레드를 도와주기 위해 만들어지는 스레드이다. 데몬스레드의 특징은 메인스레드가 죽으면 같이 죽는다는 것이다. 데몬스레드는 스스로는 어떤 일도 수행할 수 없으며 다른 스레드와 같이 동작한다. 이러한 데몬스레드는 JVM에 의해 기본적으로 제공되는
  3. 여태까지 우리는 자바의 스레드를 사용하여 프로그램을 짜왔음. -> main 메소드(main 스레드) 하지만 독립스레드란 메인스레드 외에 별도로 존재하는 스레드를 뜻한다. 이와 좀 다른 데몬스레드는 다른 스레드를 도와주기 위해 만들어지는 스레드이다. 데몬스레드의 특징은 메인스레드가 죽으면 같이 죽는다는 것이다. 데몬스레드는 스스로는 어떤 일도 수행할 수 없으며 다른 스레드와 같이 동작한다. 이러한 데몬스레드는 JVM에 의해 기본적으로 제공되는
  4. NEW - 스레드가 생성되었지만 아직 실행할 준비가 되지 않은 상태로 start() 메소드가 호출되면 RUNNABLE 상태가 된다. RUNNABLE - 스레드가 현재 실행되고 있거나 실행 준비되어 스케쥴링을 기다리는 상태 WAITING - 스레드가 어떤 Object 타입의 객체 a에 대해 a.wait()을 호출하고 무한 대기하면서 다른 스레드가 a.notify(), a.notifyAll()을 불러주기를 기다리고 있는상태 TIMED_WAITING - 스레드가 sleep(int n)을 홏풀하여 n밀리초 동안 잠을 자고 있는 상태 BLOCK - 스레드가 I/O(입출력)작업을 요청하여 I/O작업이 완료되기를 기다리는 상태 응용프로그램이 입출력 작업을 실행하면 JVM이 자동으로 현재 스레드를 BLOCK상태로 만든다. TERMINATED - 스레드가 종료한 상태로 더 이상 다른 상태로 변이할 수 없다. 스레드 동기화(Thread Synchronization) 공유데이터에 접근하고자 하는 다수의 스레드가 서로 순서대로 충돌 없이 공유데이터를  배타적으로 접근하기 위해 상호렵력하는 것인데요. 공유데이터를 다루는 프로그램코드를 임계 영역이라고 하고 임계 영역에 대한 멀티스레드의 동기화가 필요해요. 자바의 스레드 동기화를 위해서는 synchronized키워드가 필요한데요. synchronized 키워드는 자바에서 스레드 동기화를 위한 장치로 임의의 코드 블록을 동기화가 설정된 임계 영역으로 지정하는 것