반응형
#1 프로세스와 스레드
멀티태스킹 : 동시에 두가지 이상의 작업을 처리하는 것
멀티태스킹을 위한 두 가지 도구 : 프로세스, 스레드
프로그램 : 파일이 존재하지만 아직 메모리에 올라가 있지 않은 상태, 즉, 실행되지 않은 코드의 집합
프로그램을 실행하는 순간 메모리에 올라가고 동작하게 되는데 이 상태의 프로그램을 '프로세스'라고 함
- 프로세스
- 프로그램이 동작하여 메모리에 올려진 상태, 실행 중인 프로그램을 의미
- 프로세스는 독립적으로 메모리에 등록되므로 여러 개의 프로그램을 동시에 실행할 수 있게 됨
- 프로세스가 여럿이 병렬적으로 실행되는 것을 thread가 해결해줌
- 스레드
- 프로세스 내에서 독립적으로 실행되는 작업 단위
- 프로세스 내의 주소 공간이나 자원들과 같은 스레드끼리 공유하면서 실행됨
- 스레드는 프로세스의 heap, data(static), code 영역등을 공유
#2 스레드 상태
상태 | 상수 | 설명 |
생성 | NEW | 스레드 객체가 생성되고 아직 start() 메서드가 호출되지 않은 상태 |
대기 | RUNNABLE | 실행 대기 or 실행 상태 |
일시정지 | WAITING | 다른 스레드가 종료될 때까지 대기하는 상태 |
TIMED_WAITING | 지정된 시간 동안 대기하는 상태 | |
BLOCKED | 락이 풀릴 때까지 대기하는 상태 | |
종료 | TERMINATED | 수행 종료 상태 |
#3 스레드 사용
- Thread 클래스를 상속받는 방법
- Runnable 인터페이스를 구현하는 방법
- 두 방법 모두 스레드를 통해 작업하고 싶은 내용을 run() 메서드에 작성
- 스레드는 run() 메서드에서 구현하지만, 클래스를 실행하기 위해서는 start() 메서드를 호출해야함
- 멀티 스레드
- 하나의 프로세스 안에서 스레드를 여러 개 선언하여 멀티 스레드 사용 가능
- 같은 시간에 서로 다른 독립적인 스레드가 일을 처리하는 것을 비동기 작업이라고함
- 즉, 두 개 이상의 스레드를 가지는 프로세스
#4 스레드 동기화
- 멀티 스레드를 구현할 경우,
하나의 공유 데이터에 동시에 접근하지 못하도록 스레드의 실행을 제어하는 것
- 임계 영역
: 멀티 스레드 프로그램에서 단 하나의 스레드만이 처리할 수 있는 영역
- 동기화
: 한 스레드가 사용 중인 객체를 다른 스레드에서 동시에 접근할 수 없도록 잠금을 걸어두는 기능
: synchronized 키워드를 사용해 블록 또는 메서드 단위로 처리
- 메서드 동기화 처리 : 메서드 이름 앞에 synchronized 키워드를 사용, 해당 메서드 전체를 동기화 처리
- 블록 동기화 처리 : 실제 실행하는 스레드의 일부분을 동기화 처리
반응형
'개발 > Java' 카테고리의 다른 글
JAVA_17_람다식 (2) | 2024.07.16 |
---|---|
JAVA_16_컬렉션 프레임워크 (1) | 2024.07.16 |
JAVA_15_기본 API 클래스 (1) | 2024.07.16 |
JAVA_14_예외 처리 (1) | 2024.07.16 |
JAVA_13_내부 클래스 (0) | 2024.07.16 |