/ JAVAJUNGSUK

Ch13-1~2. process·thread

자바의 정석 기초편

0. 목차



Chapter13. 쓰레드

Ch13 - 1. 프로세스(process)와 쓰레드(thread)

Ch13 - 2. 멀티 쓰레딩의 장단점



Ch13 - 1. 프로세스(process)와 쓰레드(thread)


▶ 프로세스(process)란?

▷ 실행 중인 프로그램
▷ 자원(resources)과 쓰레드로 구성
  • 자원(resources) : 메모리, CPU…

▶ 쓰레드(thread)란?

▷ 프로세스 내에서 실제 작업을 수행
▷ 모든 프로세스는 최소한 하나의 쓰레드를 가짐


▶ 싱글 쓰레드 프로세스

▷ 자원 + 쓰레드
▷ 일꾼 1명


▶ 멀티 쓰레드 프로세스

▷ 자원 + 쓰레드 + 쓰레드 + … + 쓰레드
▷ 일꾼 n명
▷ 사용하는 대부분 프로그램은 멀티 쓰레드 프로세스



▶ 싱글 쓰레드 프로세스 vs 멀티 쓰레드 프로세스

하나의 새로운 프로세스를 생성하는 것보다
하나의 새로운 쓰레드를 생성하는 것이 더 적은 비용이 듦


▷ CGI vs Java Servlet





Java Servlet



Ch13 - 2. 멀티 쓰레딩의 장단점


▶ 멀티 쓰레딩의 장점

▷ 시스템 자원을 보다 효율적으로 사용
▷ 사용자에 대한 응답성(reponseness)이 향상
  • ex) 채팅 하다가 파일 전송하기 : 멀티 쓰레드는 가능, 싱글 쓰레드는 불가능
▷ 작업이 분리되어 코드가 간결
▷ 여러 모로 좋다


대부분의 프로그램이 멀티 쓰레드로 작성 되어있지만,
멀티 쓰레드 프로그래밍이 장점만 있는 것은 아님!


▶ 멀티 쓰레딩의 단점

▷ 동기화(synchroniztion)에 주의해야 함
  • 공장 내 많은 일꾼 有 → 일꾼1과 일꾼2가 동시에 망치를 사용하려하면 문제 발생
▷ 교착상태(dead-lock)가 발생하지 않도록 주의
  • 공장 내 망치 든 일꾼과 톱을 든 일꾼이 대치하고 있음
    • 망치 든 일꾼 : 톱 주면 망치 줄게
    • 톱 든 일꾼 : 망치 주면 톱 줄게
▷ 각 쓰레드가 효율적으로 고르게 실행 될 수 있게 해야 함
  • 기아 : 프로그램 잘못 짜면 특정 쓰레드는 실행 될 기회를 얻지 못하고 굶어죽음
▷ 프로그래밍 시 고려 사항이 많음