개발/Java

JAVA_18_Thread

onivv 2024. 7. 16. 14:08
반응형

#1 프로세스와 스레드

멀티태스킹 : 동시에 두가지 이상의 작업을 처리하는 것

멀티태스킹을 위한 두 가지 도구 : 프로세스, 스레드

프로그램 : 파일이 존재하지만 아직 메모리에 올라가 있지 않은 상태, 즉, 실행되지 않은 코드의 집합

프로그램을 실행하는 순간 메모리에 올라가고 동작하게 되는데 이 상태의 프로그램을 '프로세스'라고 함

  • 프로세스
    • 로그램이 동작하여 메모리에 올려진 상태, 실행 중인 프로그램을 의미
    • 프로세스는 독립적으로 메모리에 등록되므로 여러 개의 프로그램을 동시에 실행할 수 있게 됨
    • 프로세스가 여럿이 병렬적으로 실행되는 것을 thread가 해결해줌
  • 스레드
    • 프로세스 내에서 독립적으로 실행되는 작업 단위
    • 프로세스 내의 주소 공간이나 자원들과 같은 스레드끼리 공유하면서 실행됨
    • 스레드는 프로세스의 heap, data(static), code 영역등을 공유

 

#2 스레드 상태

상태 상수 설명
생성 NEW 스레드 객체가 생성되고 아직 start() 메서드가 호출되지 않은 상태
대기 RUNNABLE 실행 대기 or 실행 상태
일시정지 WAITING 다른 스레드가 종료될 때까지 대기하는 상태
TIMED_WAITING 지정된 시간 동안 대기하는 상태
BLOCKED 락이 풀릴 때까지 대기하는 상태
종료 TERMINATED 수행 종료 상태

 

#3 스레드 사용

  1. Thread 클래스를 상속받는 방법
  2. Runnable 인터페이스를 구현하는 방법
    • 두 방법 모두 스레드를 통해 작업하고 싶은 내용을 run() 메서드에 작성
    • 스레드는 run() 메서드에서 구현하지만, 클래스를 실행하기 위해서는 start() 메서드를 호출해야함
  • 멀티 스레드
    • 하나의 프로세스 안에서 스레드를 여러 개 선언하여 멀티 스레드 사용 가능
    • 같은 시간에 서로 다른 독립적인 스레드가 일을 처리하는 것을 비동기 작업이라고함
    • 즉, 두 개 이상의 스레드를 가지는 프로세스

 

#4 스레드 동기화

- 멀티 스레드를 구현할 경우,

  하나의 공유 데이터에 동시에 접근하지 못하도록 스레드의 실행을 제어하는 것

- 임계 영역

     : 멀티 스레드 프로그램에서 단 하나의 스레드만이 처리할 수 있는 영역

- 동기화

     : 한 스레드가 사용 중인 객체를 다른 스레드에서 동시에 접근할 수 없도록 잠금을 걸어두는 기능

     : synchronized 키워드를 사용해 블록 또는 메서드 단위로 처리

 

  • 메서드 동기화 처리 : 메서드 이름 앞에 synchronized 키워드를 사용, 해당 메서드 전체를 동기화 처리
  • 블록 동기화 처리 : 실제 실행하는 스레드의 일부분을 동기화 처리

 

반응형

'개발 > Java' 카테고리의 다른 글

JAVA_17_람다식  (2) 2024.07.16
JAVA_16_컬렉션 프레임워크  (1) 2024.07.16
JAVA_15_기본 API 클래스  (1) 2024.07.16
JAVA_14_예외 처리  (1) 2024.07.16
JAVA_13_내부 클래스  (0) 2024.07.16