개발저장소
[Java] 스레드 - 1 본문
스레드란?
메모리가 CPU를 독립적으로 처리하는 하나의 최소 작업 단위를 말한다.
CPU: 중앙 처리 장치라고도 하며, 연산을 수행함으로써 실제 프로그램을 실행하는 장치이다.
하드디스크: 저장 매체로서 상대적으로 속도가 가장 낮다.
메모리: CPU가 연산을 하기 위해 필요한 정보를 저장해두는 공간이다.
프로그램은 하드디스크에 저장된 파일들의 모임, 프로세스는 메모리에 로딩된 프로그램을 뜻한다.
이때, 여러 프로그램이 메모리에 로딩되어 실행되는 것을 멀티 프로세스라고 한다.
마찬가지로 여러 스레드를 생성해 동시에 2개 이상의 스레드가 동작하는 것을 멀티 스레드라고 한다.
1. 스레드의 동시성과 병렬성
동시성(Concurrency)
처리해야할 작업의 수가 CPU 코어 수보다 많을 때를 말한다. CPU는 각 작업 스레드의 요청을 번갈아가면서 실행하는데, 매우 짧은 간격으로 교차 실행하기 때문에, 마치 동시에 실행되는 것처럼 보인다. 이를 스레드의 동시성이라고 한다.
병렬성(Parallelism)
CPU 코어 수가 작업 수보다 많을 때는 각 작업을 각 코어에 할당해 동시에 실행할 수 있다. 이를 스레드의 병렬성이라고 한다.
2. 스레드의 생성 및 실행
스레드를 생성하는 방법은 크게 2가지로 나눌 수 있다.
첫번째, Thread 클래스를 상속받아 run() 메서드를 오버라이딩하는 것이다.
두번째, Runnable 인터페이스를 구현한 Runnable 객체를 생성한다. 그리고 Thread 생성자로 Runnable 객체를 전달하는 것이다.
자바는 다중 상속을 허용하지 않기 때문에, Thread 클래스를 상속받는 방법보단, Runnable 인터페이스를 구현하는 방법을 사용한다.
생성한 스레드를 실행하는 방법은 Thread 객체 내의 start() 메서드를 호출해서 run()을 실행한다.
3. 스레드의 속성
현재 스레드의 객체 참조값 얻어오는 방법
static Thread Thread.currentThread()
실행 중인 스레드 개수 가져오기
static int Thread.activeCount
스레드 이름 설정과 이름 가져오기
String setName(String name)
String getName()
모든 스레드는 1 ~ 10 사이의 우선순위를 가지고 있다. 숫자가 클수록 우선순위가 높다. 기본값으로 5를 가진다.
우선순위가 1, 5, 10일 때는 정적 상수로 값이 정의되어 있다.
public final static int MIN_PRIORITY = 1;
public final static int NORM_PRIORITY = 5;
public final static int MAX_PRIORITY = 10;
우선순위는 스레드의 동시성과 관계가 있다. 2개의 작업이 하나의 CPU에서 동작할 때, 우선순위가 높다면 상대적으로 더 많은 시간을 할당받게 된다.
데몬 스레드(Daemon Thread)
다른 스레드가 모두 종료되면 함께 종료되는 스레드, main 스레드뿐만 아니라 데몬이 아닌 모든 스레드를 말한다.
setDaemon() 메서드를 사용해 데몬을 설정할 수 있고, 기본값은 false이다. 반드시 스레드 실행 전에 설정해야 한다.
'Programming Language > Java' 카테고리의 다른 글
[Java] 스레드 - 2 (0) | 2024.05.14 |
---|---|
[Java] 예외 처리 (0) | 2024.05.10 |
[Java] 이너 클래스와 이너 인터페이스 (0) | 2024.05.09 |
[Java] 추상 클래스와 인터페이스 (0) | 2024.05.08 |
[Java] 상속 (0) | 2024.05.03 |