Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
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
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

Thread란? 본문

기타

Thread란?

코드와이 2021. 11. 29. 18:13

Thread

  • 개념
    • 하나의 프로세스 내부에서 독립적으로 실행되는 하나의 작업 단위를 말하며, 세부적으로는 운영체제에 의해 관리되는 하나의 작업 혹은 태스크를 의미한다.
  1. JVM에 의해 하나의 프로세스가 발생하고 main() 안의 실행문들이 하나의 스레드이다.
  2. main() 이외의 또 다른 스레드를 만들기 위해선 Thread 클래스를 상속하거나 Runnable 인터페이스를 구현한다.
  3. 다중 스레드 작업 시에는 각 스레드끼리 정보를 주고 받을 수 있어 처리 과정의 오류를 줄일 수 있다.
  4. 프로세스끼리는 정보를 주고 받을 수 없다.

멀티스레딩

  • 개념
    • 여러 스레드를 동시에 실행시키는 응용프로그램을 작성하는 기법
  • 장점
    • 메모리 공유로 인한 시스템 자원 소모 감소
    • 동시에 두 가지 이상의 활동을 하는 것이 가능
  • 단점
    • 서로 자원을 소모하다가 충돌이 일어날 수 있음
    • 코딩이 난해해져 버그 발생확률 향상

스레드 생성주기

  • Runnable( = Ready)
    • 스레드가 실행되기 위한 준비 단계
    • CPU가 점유하고 있지 않으며 대기하고 있는 상태로 코딩 상에서 start() 메소드를 호출하면 run() 메소드에 설정된 스레드가 Runnable상태로 진입한다.
  • Running
    • 스케줄러에 의해 선택된 스레드가 실행되는 단계
    • CPU를 점유하여 실행하고 있는 상태이며 run() 메서드는 JVM만이 호출 가능하다.
    • Runnable에 있는 여러 스레드 중 우선 순위를 가진 스레드가 결정되면 JVM이 자동으로 run() 메소드를 호출시켜 스레드가 Running상태로 진입한다.
  • Dead( = Done)
    • Running 상태에서 스레드가 모두 실행되고 난 이후의 상태
  • Blocked
    • 스레드가 작업을 완수하지 못하고 잠시 작업을 멈추는 단계
    • CPU 점유권을 상실한 상태로 후에 특정 메서드를 실행시켜 Runnable 상태로 전환된다.
    • wait() 메소드에 의해 Blocked 상태로 넘어가고 이 스레드는 notify() 메소드가 호출되면 RUnnable 상태가 된다. sleep() 메소드에 의해 Blocked 상태의 시간을 지정할 수 있다.

 

Reference

'기타' 카테고리의 다른 글

데이터베이스에 관하여  (0) 2021.11.30
디자인 패턴의 개념과 종류  (0) 2021.11.29
Maven & Gradle  (0) 2021.11.29
Web Server vs WAS  (0) 2021.11.29
형상관리 툴(CVS, SVN, Git)  (0) 2021.11.29