JAVA
Java Thread
개발자가되고싶어
2021. 8. 16. 01:06
Java Thread
Java Thread란?
우리는 하나의 프로세스를 작성하며 하나의 프로세스 내에 여러개의 스레드로 작업을 진행합니다.
특정 작업을 진행할때 많은 시간이 소요되는 작업이 존재하기 마련입니다.
이럴때 우린 sub thread 를 만들어 처리를 위임하고 main thread는 자기의 일을 이어서 진행 할 필요가 있습니다.
Thread 장점
- 단일 프로세스 내에서 많은 동시 작업 가능
- 유지 보수 비용 절감
- CPU 리소스를 효율적으로 사용
- 스레드는 시스템 리소스에 최소한의 영향을 미칩니다. 스레드는 기존 프로세스보다 생성, 유지 및 관리에 더 적은 오버헤드가 필요합니다.
Thread 단점
- 복잡한 디버깅 및 테스트 프로세스
- 교착 상태 발생 가능성 증가
- 프로그램 작성 난이도 증가
- 예측할 수 없는 결과의 발생 가능성
구현 방법
1. Thread의 상속
public static void main(String[] args) {
Thread thread = new MyThread();
thread.start();
}
class MyThread extends Thread {
@Override
public void run(){
//doSomething
}
}
Thread를 상속하여 구현한 방식입니다. Thread를 상속하여 구현할 경우 다중 상속이 불가능 하기 때문에 interface인 Runnable을 구현하는 것이 일반적입니다.
2. Runnable의 구현
public static void main(String[] args) {
Thread thread = new Thread(new MyThread()); //Thread 생성자의 인자로 Runnable의 구현체를 넘겨주어야함
thread.start(); //Thread 실행 메소드
}
class MyThread implements Runnable {
@Override
public void run(){
//doSomething
}
}
Runnable interface를 구현하는 방식입니다. 다중 상속이 불가능한 java의 특성상 Runnable interface를 구현하여 사용하는 경우가 일반적입니다. 이 방법의 경우 Thread를 시작해주기 위해 Thread 객체를 생성하여 Ruunable의 구현체를 생성자에 인자값으로 넣어주어 실행을 시켜주어야 합니다.