개발자이야기
Java Thread 본문
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의 구현체를 생성자에 인자값으로 넣어주어 실행을 시켜주어야 합니다.
'JAVA' 카테고리의 다른 글
Java String vs StringBuffer vs StringBuilder (0) | 2021.08.12 |
---|---|
Java interface vs abstract(추상클래스) 차이 (0) | 2021.08.11 |
Java 메모리 관리 stack 과 heap (0) | 2021.08.05 |
java Hashmap vs Hashtable (0) | 2021.08.03 |
java ArrayList, LinkedList (0) | 2021.07.30 |