Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발자이야기

Java Thread 본문

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의 구현체를 생성자에 인자값으로 넣어주어 실행을 시켜주어야 합니다.

 

 

'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