CH13-1 쓰레드

[자바의 정석 - 기초편] ch13-1 쓰레드

13장 쓰레드의 첫 강의인 프로세스와 쓰레드에 대해 배워보자. 드디어 멀티스레드를 배운다… 내 락앤 스톤…

프로세스란, 실행중인 프로그램을 말한다. 자원(메모리, CPU, IO)등과 쓰레드로 구성되어 있다.

쓰레드란, 프로세스 내에서 실제 작업을 수행하는 코드 블럭이다. 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다.

남궁성님은 프로세스는 공장, 쓰레드는 일꾼에 비유한다.

멀티쓰레드 프로세스란, 한 프로세스 내에서 여러 일꾼이 동시에 작업을 수행한다고 이해할 수 있다.

우리가 사용하는 대부분의 프로그램은.. 멀티 쓰레드로 동작한다.

Untitled

작업관리자에서 스레드를 확인할 수 있다.

Untitled

각 프로그램마다 쓰레드 개수를 확인할 수 있다.

하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 쓰레드를 생성하는게 훨씬 더 적은 비용이 든다. 공장 새로 짓는 것보다, 공장 하나에서 일꾼 하나 고용하는게 더 쉬운일임.

왜?? 예전에 배운 내용을 생각해보자. 쓰레드를 하나 더 생성하면 자원을 공유할 수 있지만, 프로세스를 하나 더 생성하면… 자원을 새로 할당해줘야 한다. 그리고 프로세스간 통신에 드는 비용도 더 많이 든다.

예전에 웹 서버에서 웹프로그램을 작성할때 CGI라는 방식과 자바 서블릿이 있었다. CGI는 멀티 쓰레드를 지원하지 않았다… 즉 사용자가 웹 서버에 요청을 할때마다(웹사이트 접근할때마다) 프로세스가 하나 더 만드는 구조였다. 하지만 자바같은 경우 멀티쓰레드를 지원하니 새로 요청을 해도 쓰레드 하나만 추가하는 구조였다. 그래서 자바가 살아남았다. 이때가 90년대 말… 2000년 초였다.

웹이 폭발할때였는데, 기존의 CGI로는 이 수요를 감당할 수 없었기 때문임.