카테고리 없음

[자바의 정석] 프로세스와 쓰레드

728x90
반응형

프로세스

  • 실행 중인 프로그램
  • 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)를 할당 받아 프로세스가 된다
  • 프로그램 수행에 필요한 데이터 / 메모리 등의 자원 / 쓰레드로 구성
  • 프로세스의 자원을 이용해 실제로 수행하는 곳이 쓰레드
  • 둘 이상의 쓰레드를 가진 프로세스는 '멀티쓰레드 프로세스'라고 한다

 

멀티쓰레딩

  • 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행하는 것

 

멀티쓰레딩의 장단점

  • 장점
    • 싱글쓰레드로 서버 프로그램을 작성하면 사용자의 요청마다 새로운 프로세스를 생성해야 함
    • 프로세스를 생성하는 것은 쓰레드를 생성하는 것 보다 더 많은 시간과 메모리 공간이 필요

 

쓰레드 구현 방법 2가지

  • Thread 클래스를 상속받는 방법
  • Runnable 인터페이스를 구현하는 방법

쓰레드의 구현

  • 작업하고자 하는 내용을 run() 메서드 내부에 채워준다
  • 생성한 쓰레드를 start() 메서드를 호출해서 실행한다

※ 주의사항

start()가 호출되었다고 바로 실행되는 것이 아니라, 실행 대기 상태에 있다가 자신의 차례가 되어야 실행

한 번 실행이 종료된 쓰레드는 다시 실행할 수 없음 → 하나의 쓰레드에 대해 start()가 한번만 호출 가능

 

CPU만 사용하는 작업의 경우 하나의 쓰레드로 작업하는 것과 두 개의 쓰레드로 작업하는 것의 속도는 거의 동일하다.

오히려 두 개의 쓰레드로 작업할 때 쓰레드 간 전환에 시간이 발생하기 때문에 멀티 쓰레드가 더 작업 속도가 느릴 수 있다.

두 쓰레드가 서로 다른 자원을 사용하는 작업의 경우 싱글 쓰레드보다 멀티 쓰레드가 더 효율적이다. 예를들어 데이터를 입력 받는 작업, 파일을 주고받는 작업, 파일을을 출력하는 작업과 같이 외부기기와의 입출력을 필요로 하는 경우가 이에 해당