Web/Java
[Java] 스레드
hikr90
2025. 1. 9. 21:53
# 스레드
- 독립적인 실행 단위
- 한번에 두가지 이상의 프로세스를 실행 가능하게 하는 클래스
- 스레드를 상속받는 클래스는 run이라는 메소드를 재정의해야한다.
public class 클래스명 extends Thread {
//
}
[참고] 스레드는 실제로 프로그램이 따로 동작하는 방식이 아닌, 빠른 속도로 번갈아 작업하는 방식으로 구동된다.
스레드 종류
타입
|
설명
|
장점
|
단점
|
싱글 스레드
|
메인으로 동작하는 스레드 외 하나의 스레드가 동작
|
- 메모리 공유로 자원 절약
- 다중 작업 동시 진행 가능
|
- 스레드간의 충돌 가능성
- 코드의 가독성
|
멀티 스레드
|
메인으로 동작하는 스레드 외 두가지 이상의 스레드가 동작
|
스레드 생성자
생성자
|
설명
|
Thread()
|
일반적인 형태의 스레드 생성자
|
Thread(Runnable r)
|
인터페이스 객체 r를 파라미터로 받는 생성자
|
Thread(String s)
|
스레드의 이름을 String타입의 파라미터 s로 받는 생성자
|
Thread(Runnable r, String s)
|
스레드의 이름을 지정하면서, Runnable 객체를 생성하는 생성자
|
스레드 메소드
메소드
|
설명
|
Sleep(long msec)
|
( ) 안의 밀리세컨드 시간만큼 대기 후 작업하는 메소드
|
Start()
|
스레드를 시작하는 메소드
|
Run()
|
스레드가 실행할 부분에대한 메소드 (오버라이딩)
|
getProperty() / setProperty
|
스레드의 우선순위를 반환 / 특정하는 메소드
|
isAlive()
|
스레드의 동작 상태 유무를 TRUE / FALSE로 반환하는 메소드
|
Resume()
|
일시정지한 스레드를 재시작하는 메소드
|
Join()
|
특정 스레드가 종료할 때까지 대기하는 메소드
|
# Runnable
- 상속으로 Run 메소드를 재정의하는 방식과 다르게 인터페이스의 추상 메소드로 구현하는 방식
- Runnable 인터페이스는 따로 상속받지 않으므로 Strat 메소드를 사용하지 못한다.
- 그래서 따로 스레드를 생성한 뒤, 인터페이스의 객체를 파라미터로 넘겨주는 방식으로 진행해야한다.
Thread와 Runnable 차이
유형
|
Thread | Runnable |
접근 방식
|
상속
|
인터페이스 구현
|
재사용 유무
|
X
|
O
|
THREAD 의 메소드 사용 여부
|
O
|
X
|
[참고] 스레드의 생성자는, Runnable의 객체를 받는 것이 가능하다.