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 
접근 방식
상속
인터페이스 구현
재사용 유무
O
THREAD 의 메소드 사용 여부
 
[참고] 스레드의 생성자는, Runnable의 객체를 받는 것이 가능하다.