JAVA/교재

JAVA 18 - 스레드

record2080 2025. 1. 25. 23:29

01. 프로세스와 스레드

02. 스레드의 사용

03. 스레드 동기화

04. 스레드 상태

 

<멀티태스킹>

동시에 두 가지 일을 처리하는 것

예) 워드로 문서를 작성하면서 음악을 듣고 동시에 메신저를 하는 일 등

=> 컴퓨터는 어떻게 멀티태스킹을 할까?? 

1. 프로세스 : 프로그램을 실행하는 순간 동작하게 되는데 이 상태의 프로그램.

각각의 프로세스들은 메모리에 독립적으로 등록되어 서로 간섭할 수 없음

2. 스레드 : 프로세스 내부에 존재하면서 실행흐름을 나타내는 것

하나의 프로세스는 적아도 한 개의 스레드를 가지고 있다.

 

<Thread의 사용>

Thread클래스를 상속하여 스레드를 구현해 볼 수 있다.

스레드는 run()메서드에서 구현하지만 클래스를 실현하기 위해서는 start() 메서드를 호출해야 한다.

 

-runnable 인터페이스상속하여 구현할 수 있음.

Thread th= new Thread(Runnable을 상속한 인스턴스);

 

-Thread에 이름 부여하기

자동설정 : Thread-n

다른 이름으로 설정 : 스레드 클래스의 setName()메서드를 변경.

 

-멀티 스레드

: 여러 개의 스레드를 이영해 동시에 작업을 수행할 수 있는데 이것을 멀티스레드라 한다

 비동기 작업 - 같은 시간에 서로 다른 독립적인 스레드가 일을 처리하는 것

 

<스레드 동기화>

: 하나의 공유 데이터에 동시에 접근하지 못하돍 스레드의 실행을 제어

 

-스레드 동기화 처리

1.메서드 단위 동기화 처리

public synchronized void add() ...

 

2. 블록 단위 동기화 처리 : 특정 영역만 동기화 처리. (메서드전체보다 처리 시간이 짧음)

synchronized (객체명) ...

 

<스레드 상태>

: 각 스레드의 상태는 스레드 클래스에 정의되어 있으며 Thread.State 타입으로 알 수 있다

6개의 타입으로 분류

상태 상수 설명
생성 NEW 스레드 객체가 생성되었지만 아직 start()메서드가 호출되지 않은 상태
대기 RUNNABLE 실행 대기 또는 실행 상태로 언제든지 갈수 있는 상태
일시정지 TIMED_WATING 주어진 시간 동안 대기하는 상태
BLOCKED 락이 풀릴 때까지 대기하는 상태
WATING 다른 스레드가 종료될 떄까지 대기하는 상태
종료 TERMINATED 수행을 종료한 상태

 

-SLEED메서드

스레드의 상태를 잠시 정지하고 싶다면 슬립메서드를 사용해 원하는 시간만큼 정지시킬 수 있다.

 

-wait(), notify() 메서드

원하는 시점에 스레드를 잠시 종료하거나 다시 시작할 수 있다.

 

 

 

'JAVA > 교재' 카테고리의 다른 글

오라클로 배우는 데이터베이스 입문 01-2. 데이터모델  (0) 2025.03.14
JAVA 19 - 파일 입출력  (0) 2025.01.26
JAVA 17 - 람다식  (0) 2025.01.24
JAVA 16 - 컬렉션 프레임워크  (0) 2025.01.23
JAVA 15- 기본 API 클래스  (1) 2025.01.22