본문 바로가기

청년취업아카데미/DayLog

[ Java ] Day 03 - ① Thread의 개념

# 쓰레드란

(1) 쓰레드란?

  • 하나의 프로그램이 하나이상의 독립적 서브 Task로 분리되어 실행될 때 각 서브 Task를 Thread라함.
  • 각 쓰레드는 별개로 실행하면서 CPU를 공동으로 사용
  • 경량(lightweight) 프로세스
  • 다중 쓰레드: 하나의 프로세스에서는 동시에 여러 쓰레드가 실행. 하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 쓰레드를 생성하는 것이 더 적은 비용

(2) 프로세스란?

  • 실행중인 프로그램, 자원(resources)과 쓰레드로 구성된다.

(3) 쓰레드 Life Cycle

 

# 멀티 쓰레드의 장단점

  1. 멀티 쓰레드는 프로세스를 복사하는 것이 아니라 Function 단위로 실행시키는 것이다. 즉, 어떤 Function에서 다른 Function을 호출하면서 그 밑의 루틴을 다시 실행하는 것이다
  2. 이 것은 같은 프로세스이므로 멀티프로세스에 비해서 덜 부하를 준다. 그래서 경량 프로세스라고 하는 것이다.
...더보기

장점

  • 자원을 효율적으로 사용가능하다.
  • 사용자에 대한 응답성(responseness)이 향상된다.
  • 작업이 분리되어 코드가 간결해진다.

"여러 모로 좋다"

단점

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

"프로그래밍할 때 고려해야 할 사항들이 많다."

 

# 멀티태스킹(Multi-Tasking)

  • 멀티 태스킹

: 컴퓨터에서 각각의 일을 전담하는 해당 프로그램들(여러 개의 프로세스)이 동시에 실행되는 것

  • 스케쥴링(Scheduling)

: 멀티 프로세스 시스템에서 각 프로세스는 동시에 실행되는 것처럼 보이지만, CPU가 하나이기 때문에 실행시간을 잘게 나누어 프로세스가 돌아가는데 각 프로세스들이 돌아가면서 CPU를 점유하는데 프로세스간 CPU 점유작업을 말한다.

multi-processing