개요

스레드를 이해하기 전에 프로세스에 대해 이해해야한다.

프로세스는 운영체제에서 실행 중인 애플리케이션을 의미한다.

프로세스는 서로 간섭하지 못하도록 운영체제가 설계되어 있다. 프로세스는 다른 프로세스의 메모리에 접근할 수 없고, 다른 프로세스가 소유한 자원에 접근 불가능 하다.

프로세서의 데이터 메모리는 다음과 같은 영역으로 구분된다.

스레드는 실행 흐름이다.

프로세스는 적어도 하나의 실행 흐름을 소유하는데, 이를 메인 스레드라고 한다.

Java 애플리케이션의 메인 스레드는 main 메소드에서 실행을 시작하고 리턴될 때 실행이 끝난다.

스레드는 객체도 아니고 메소드도 아니다. Java 바이트코드를 순서대로 실행해 나가는 것이 실행 흐름이다.

스레드는 CPU core가 아니다.

CPU core가 Java 바이트코드를 순서대로 실행해 나가는 것이 스레드이다.

프로세스에 스레드가 두 개 이상인 것을 멀티 스레드라고 한다.

스레드를 쓰는 이유는 스레드의 장점에서 비롯된다. 스레드의 장점은 다음과 같다.

다만 스레드는 공유를 하기에 충돌이 발생할 수 있다.