멀티 스레드 개념
1.1 프로세스와 스레드
* 프로세스(process)
-사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데 이것이 프로세스이다.
* 멀티 태스킹(multi tasking)
-두 가지 이상의 작업을 동시에 처리하는 것을 말하는데, 운영체제는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당해주고, 병렬로 실행시킨다.
* 스레드(thread)
-사전적 의미로는 한 가닥의 실이란는 뜻
-한 가지 작업을 실행하기 위해 순차적으로 실행할 코드를 실처럼 이어 놓았다고 해서 유래된 이름
-하나의 스레드는 하나의 코드 실행 흐름이기 때문에 한 프로세스 내에 스레드가 두 개라면 두 개의 코드 실행 흐름이 생긴다는 의미
1.2 메인 스레드
* 메인 스레드(main thread)
-모든 자바 애플리케이션은 메인 스레드가 main() 메소드를 실행하면서 시작된다.
-메인 스레드는 main() 메소드의 첫 코드부터 아래로 순차적으로 실행하고, 마지막 코드를 실행하거나 return 문을 만나면 실행이 종료된다.
-메인 스레드는 필요에 따라 작업 스레드들을 만들어 병렬로 코드를 실행할 수 있다.