[Java] Thread - 쓰레드

SungminPark·2024년 1월 2일

자바 정리

목록 보기
5/10
post-thumbnail

🔑 Thread란 무엇인가


  • 쓰레드 : 프로세스 내에서 실제 작업을 수행
    -> 모든 프로세스는 하나 이상의 쓰레드를 가지고 있다.

    프로세스 : 쓰레드 = 공장 : 일꾼

프로세스와 프로그램


실행 전 상태 -> 프로그램
실행 중인 프로그램 -> 프로세스(자원과 쓰레드로 구성)

  • 싱글 쓰레드 프로세스 : 자원 + 쓰레드
  • 멀티 쓰레드 프로세스 : 자원 + 쓰레드 + 쓰레드 ... + 쓰레드

멀티 프로세스 vs 멀티쓰레드
새로운 프로세스 생성보다 새로운 쓰레드 생성 비용이 더 적다

🔑 멀티 쓰레드의 장단점


장점

  • 자원을 보다 효율적으로 사용할 수 있다
  • 사용자에 대한 응답성이 향상된다
  • 작업이 분리되어 코드가 간결해진다

단점

  • 동기화에 주의해야한다
  • 교착상태가 발생하지 않도록 주의해야 한다.
  • 각 쓰레드가 효율적으로 고르게 실행될 수 있게 해야 한다.

🔑 쓰레드의 구현과 실행


//Thread클래스를 상속
    class MyThread extends Thread {
        public void run() { 작업내용 }
    }
    
   public static void main(String[] args) {
       MyThread th1 = new MyThread();
       th1.start();
 }
//Runnable 인터페이스를 구현
class MyRunner1 implements Runnable { 작업내용 }

public static void main(String[] args) { 
  MyRunner1 r = new MyRunner1();
          Thread th2 = new Thread(r);
          th2.start();
}

start()와 run()

start는 메소드가 실행되기 위한 환경을 만들어주고 run을 실행시킨다.

🔑 데몬 쓰레드


  • 일반 쓰레드의 작업을 돕는 보조적인 역할 수행
  • 일반 쓰레드가 모두 종료되면 자동 종료
  • 가비지 컬랙터, 자동저장, 화면자동갱신등에 사용된다
  • 무한루프와 조건문을 이용햇 실행 수 대기하다가
    특정 조건이 만족되면 작업을 수행하고 다시 대기
profile
개발자 준비 중 입니다

0개의 댓글