본문 바로가기
스파르타 내배캠

[TIL] #7. thread

by saemsaem 2024. 4. 29.


 

 [ 자바 문법 종합반 5주차 ] 

Thread

: 프로세스 내에서 일하는 일꾼

  • 실행요청이 들어오면 쓰레드 생성
  • 프로세스 내 주소공간이나 메모리공간을 공유받음

 

Multi Thread

: 여러개의 쓰레드가 실행되는 것

  • 장점
     - 성능이 좋아짐
     - 
    지원을 효율적으로 사용
  • 단점
     - 
    동기화 문제 발생 가능성
     - 
    데드락 발생 가능성

 

Daemon Thread

: 낮은 우선순위를 가진 쓰레드

 

쓰레드 제어

  • sleep( ) : 지정된 시간동안 일시정지
  • interrupt( ) : 일시정지 상태인 쓰레드를 실행 대기 상태로
  • join( ) : 정해진 시간동안 지정한 쓰레드가 작업하는 것을 기다림 ⇒ 쓰레드의 실행을 보장받을 수 있음
  • yield( ) : 남은 시간을 다음 쓰레드에게 양보하고, 자신은 실행대기 상태가 됨
  • synchronized : 한 쓰레드가 진행중인 작업을 다른 쓰레드가 침범하지 못하도록 막는 것
  • wait( ) : 실행중이던 쓰레드는 대기실에서 통지를 기다림
  • notify( ) : 대기실에 있는 쓰레드에게 통지 → 쓰레드가 다시 진행될 수 있게 함
  • lock
    • ReentrantLock : 가장 일반적
    • ReentrantReadWriteLock : 읽기를 위한 lock, 쓰기를 위한 lock
    • StampedLock : 낙관적인 lock 기능 추가
  • condition : await( ), signal( )