본문 바로가기

IT공부/JAVA

멀티쓰레드

스레드의 개념
 프로세스(process)란?
- 프로세스(process)란 단순히 실행 중인 프로그램(program)이라고 할 수 있습니다.
- 즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말합니다.
- 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성됩니다.

 

스레드의 개념
 스레드(thread)란?
- 스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미합니다.
- 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다.
- 또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 합니다.

 

프로세스와 스레드의 관계

 

스레드의 생성과 실행
 Thread 클래스를 상속하는 방법
- start() : 스레드를 시작하는 메소드
- run() : 실제 작업을 수행하는 메소드

- sleep(time:milisec단위) : 주어진 시간만큼 실행 흐름을 중지시키는 메소드

 

  Runnable 인터페이스를 구현하는 방법
- run() 메서드를 반드시 재정의 해야 함.
- 재정의 한 클래스를 Thread 클래스의 생성자 매개변수로 하여 Thread 객체를 생성해서 사용.

 

 스레드의 종류
- 독립 스레드
- 데몬 스레드

 

Thread 클래스
 Thread 클래스의 생성자

Thread클래스의 주요 생성자

 

 Thread 클래스의 주요 메서드

Thread 클래스의 주요 메서드

 

스레드 간의 커뮤니케이션(동기화)
 Critical section의 동기화 문제
- 동기화 : 공유자원을 상대로 순서대로 작업이 이루어지는 것을 동기화가 보장된다고 한다.

// 동기화를 보장한다는것은 우선 사용중인 쓰레드가 공유자원이 락을걸어서 순서대로 사용하게 하는것을 뜻한다.
- Critical section : 스레드들이 공유하는 영역(데이터)
- 동기화(Synchronized) 블럭
- 동기화(Synchronized) 메서드

 

  스레드의 제어를 위한 도구
- setPriority() : 스레드가 Run 상태에 들어갈 수 있는 우선권을 결정.
- sleep() : 일정 시간 동안 작업을 멈추게 한다.
- wait() : 스레드를 대기상태(NotRunnable)로 보낸다.
- notify() : 대기상태에 있는 스레드를 Runnable 상태로 복귀시켜서 작업을 재개하게 한다.
- notifyAll() : 대기상태에 있는 모든 스레드를 Runnable 상태로 복귀시켜서 작업을 재개하게 한다.

 

 

'IT공부 > JAVA' 카테고리의 다른 글

JavaFX 이벤트 처리  (0) 2019.05.27
람다식(Lambda Expressions in Java)  (0) 2019.05.22
중첩 클래스  (0) 2019.05.20
컬렉션 프레임워크(사용빈도 최상)  (0) 2019.05.16
기본 API  (0) 2019.05.13