자바에서 스레드(Thread)작동

2025. 7. 7. 21:44·STUDY/JAVA
반응형

멀티스레드 프로그래밍은 자바의 핵심 기능 중 하나.
특히 백엔드 개발에서 동시성 처리, 대용량 작업 분산, 비동기 실행 등을 구현할 때 필수적인 기술.

이 글에서는 자바에서 스레드가 어떻게 작동하는지, 그리고 실무에서 어떻게 다뤄야 하는지 간단한 이론 중심으로 정리.

 

1. 스레드란?

스레드는 프로세스 내에서 실행되는 독립적인 작업 단위입니다.
자바 애플리케이션은 기본적으로 하나의 main 스레드로 시작하며, 추가 작업을 위해 여러 개의 스레드를 생성 가능.

하나의 프로세스 → 여러 개의 스레드로 나뉘어 병렬 작업 수행

 

2. 스레드 방법

 a. Thread 클래스 상속

class MyThread extends Thread {
    public void run() {
        System.out.println("Hello from thread!");
    }
}

new MyThread().start();  // run()이 아닌 start() 호출

 b. Runnable 인터페이스 구현

class MyRunnable implements Runnable {
    public void run() {
        System.out.println("Runnable 실행!");
    }
}

new Thread(new MyRunnable()).start();

 

3. 스레드 생명주기

New → Runnable → Running → Terminated
                   ↓
                Blocked

 

  • New: 생성되었지만 아직 start() 호출 전
  • Runnable: 실행 준비 완료 (CPU 할당 대기)
  • Running: CPU를 받아 실행 중
  • Blocked / Waiting: I/O 등으로 대기 상태
  • Terminated: 실행 완료 or 예외 종료

4. 동기화와 경쟁조건

멀티스레드 환경에서는 여러 스레드가 동시에 하나의 자원에 접근할 수 있어 데이터 충돌이 발생(Race Condition)

>> synchronized로 해결

public synchronized void increment() {
    count++;
}
 

 

synchronized 키워드는 해당 블록/메서드를 한 번에 하나의 스레드만 실행하게 만들어 줌.
하지만 과도한 사용은 성능 저하로 이어지므로 꼭 필요한 부분에만 적용해야 함.

 

5. 데드락

 : 서로 다른 스레드가 자원을 점유한 채 서로가 가진 자원을 기다리는 상황 >> 프로그램 멈춤

 

반응형
저작자표시 (새창열림)

'STUDY > JAVA' 카테고리의 다른 글

Document base [파일경로]does not exist or is not a readable directory at org.apache.naming.resources.FileDirContext.setDocBase  (0) 2025.02.13
myBatis 로 oracle에 배열데이터 foreach 사용해 한 컬럼에 넣기  (0) 2024.12.19
추상클래스(Abastract) 개념 및 예제  (1) 2022.10.28
열거타입(Enumeration type)  (0) 2022.10.27
string 배열 비교(참조타입 배열 비교)  (0) 2022.10.27
'STUDY/JAVA' 카테고리의 다른 글
  • Document base [파일경로]does not exist or is not a readable directory at org.apache.naming.resources.FileDirContext.setDocBase
  • myBatis 로 oracle에 배열데이터 foreach 사용해 한 컬럼에 넣기
  • 추상클래스(Abastract) 개념 및 예제
  • 열거타입(Enumeration type)
3unB
3unB
  • 3unB
    ILLILI
    3unB
  • 전체
    오늘
    어제
    • 분류 전체보기 (153)
      • STUDY (109)
        • JAVA (31)
        • SPRING (29)
        • JSP (11)
        • DATABASE (19)
        • HTML (0)
        • CSS (4)
        • GITHUB (2)
        • ETC (5)
        • 자격증 (1)
        • ERROR (6)
      • PROJECT (6)
        • Personal_Project 01 - commu.. (1)
        • TeamProject - JOINUS (4)
      • EUNB (30)
        • 맛집 (27)
        • 여행 (3)
        • 전세사기 (0)
      • 오블완챌린지 ++ (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 짱민지
    • 아랄이
  • 공지사항

  • 인기 글

  • 태그

    전포 오꼬노미야끼
    배열 한 컬럼에 넣기
    전포동 핫플
    인제 고향집
    서면 설야멱
    속초 해변 숙소
    oracle
    전포동 맛집
    오블완
    인제 두부
    서면 맛집
    콩콩팥팥 맛집
    전포 신상 맛집
    mysql
    망미 테린느
    망미 조용한 카페
    속초 중앙시장 감자전
    전포 맛집
    Database
    망미 바
    전포 연어덮밥
    속초 숙소 내돈내산
    티스토리챌린지
    전포동 카페
    콩콩팥팥 두부
    망미 카페
    alter
    전포 밥집
    센텀 신세계백화점 팝업
    전포 데이트
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.0
3unB
자바에서 스레드(Thread)작동
상단으로

티스토리툴바