프로세스
- 운영체제에서는 실행 중인 하나의 애플리케이션
- 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데 이것이 프로세스이다.
멀티프로세스
- 운영체제에서 할당받은 자신의 메모리를 가지고 실행하기 때문에 각 프로세스는 서로 독립적이다.
- 하나의 프로세스에서 오류가 발생해도 다른 프로세스에 영향을 미치지 않는다.
멀티 스레드
- 하나의 프로세스 내에 동시 실행을 하는 스레드들이 2개 이상인 경우
- 하나의 프로세스 내부에 생성되기 때문에 하나의 스레드가 예외를 발생시키면 프로세스 자체가 종료될 수 있음
- 다른 스레드에 영향을 미침
메인 스레드
- 자바의 모든 애플리케이션은 메인 스레드가 main() 메소드를 실행하면서 시작한다.
- 메인 스레드는 main() 메소드의 첫 코드부터 아래로 순차적으로 실행하고, main() 메
소드의 마지막 코드를 실행하거나 return문을 만나면 실행이 종료된다
- 메인 스레드는 필요에 따라 작업 스레드들을 만들어서 병렬로 코드를 실행할 수 있다
- 즉, 멀티스레드를 생성해서 멀티 태스킹을 수행합니다.
작업 스레드
- 메인 작업 이외에 병렬 작업의 수만큼 생성하는 스레드
- 작업 스레드도 객체로 생성되기 때문에 클래스가 필요
- Thread 클래스를 직접 객체화해서 생성
- java.lang.Thread 클래스로부터 작업 스레드 객체를 직접 생성하려면 다음과 같이 Runnable을
매개값으로 갖는 생성자를 호출
- java.lang.Thread 클래스로부터 작업 스레드 객체를 직접 생성하려면 다음과 같이 Runnable을
- Thread 클래스를 상속해서 하위 클래스를 만들어 생성
- 작업 스레드가 실행할 작업을 Runnable로 만들지 않고, Thread의 하위 클래스로 작업 스레드를
정의하면서 작업 내용을 포함시킬 수 있음
- 작업 스레드가 실행할 작업을 Runnable로 만들지 않고, Thread의 하위 클래스로 작업 스레드를
동기화 메소드
- 임계 영역 : 멀티 스레드 프로그램에서 단 하나의 스레드만 실행할 수 있는 코드 영역
- 자바는 임계 영역을 지정하기 위해 동기화synchronized 메소드를 제공
- 스레드가 객체 내부의 동기화 메소드를 실행하면 즉시 객체에 잠금을 걸어 다른 스레드가 동기화 메소드를 실행하지 못하도록 함.
- 동기화 메소드를 만들려면 메소드 선언에 synchronized 키워드를 붙이면 됨
- 인스턴스, 정적메소드 모두 붙일 수 있음
확인 문제
4. 스레드 실행을 시작하려면 run() 메소드를 호출해야 한다.
1. new MusicRunnableO
2. extends Thread
3. implements Runnable
2. 스레드가 동기화 메소드를 실행할 때 다른 스레드는 일반 메소드를 호출할 수 없다.
'JAVA' 카테고리의 다른 글
스레드 제어 (0) | 2022.12.05 |
---|---|
java.util 패키지 (0) | 2022.11.30 |
java.lang 패키지 (2) | 2022.11.30 |
익명 객체 (0) | 2022.11.15 |
중첩 클래스와 중첩 인터페이스 (0) | 2022.11.15 |