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 |