java Thread와 MainThread

운영체제에서는 실행중인 하나의 어플리케이션을 프로세스(process)라고 부른다. 즉 메모리에 올라가 현재 동작중인 프로그램을 프로세스라고 한다. 그렇다면 쓰레드(Thread)는 무엇을 말하는 것일까?

쓰레드는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 쓰레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 쓰레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티쓰레드(multithread)라고 한다.

프로그램이 동작을 하려면 적어도 최소 한개의 쓰레드는 반드시 필요하다. 자바 프로그램에서는 그 역할을 Main메소드가 한다. **java에서 Main 메소드는 프로그램의 시작 엔트리 포인트면서 동시에 Main 쓰레드라고 볼 수 있다. ** 메인쓰레드는 필요에 따라 서브 쓰레드들을 만들어서 병렬로 코드를 실행할 수 있다. 즉 멀티 쓰레드를 생성해서 멀티 태스킹을 수행한다.

싱글 쓰레드 프로그램인 경우 메인 쓰레드가 종료하면 프로세스도 종료된다. 하지만 멀티쓰레드 프로그램인 경우 실행중인 쓰레드가 하나라도 있다면 프로세스는 종료 되지 않는다. 메인쓰레드가 이미 종료되었더라도 아직 종료되지 않고 동작중인 쓰레드가 있다면 그 프로세스는 종료되지 않는다.

싱글과 멀티쓰레드