1. 스레드의 개요

멀티 프로세싱(Multi-Processing) : 여러 개의 프로세스가 동시에 실행

멀티 스레딩(Multi-Threading) : 하나의 프로세스 내에서 여러 스레드가 동시에 작업을 수행

장점

단점 - 여러 스레드가 같은 프로세스 내에서 자원을 공유하면서 작업을 하기 때문에 발생할 수 있는 동기화(synchronization) 문제들을 고려해서 신중히 프로그래밍 해야한다.

프로세스와 스레드

프로세스는 자신 만의 데이터를 가지는 반면 스레드들은 동일한 데이터를 공유한다.

프로세스(Process)

운영체제로부터 자원을 할당받는 작업의 단위

실행될 때 운영체제로부터 프로세서를 할당받고, 운영되기 위해 필요한 주소 공간, 메모리 등 자원을 할당받습니다.

프로세스의 메모리 공간은 다른 프로세스와 완전히 분리된다.

스레드(Thread)

프로세스가 할당받은 자원을 이용하는 실행의 단위

한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원들을 같은 프로세스 내에 스레드끼리 공유하면서 실행된다.

모든 자바 애플리케이션은 적어도 하나의 스레드를 가진다. 이를 메인 스레드라고 부른다.

ex) 이클립스 프로그램 실행 → 한번 더 실행 → 2개의 프로세스 생성 → 각 프로세스마다 메인 스레드와 추가적인 스레드 실행

2. 스레드 생성과 실행