-
[Java] 멀티 스레드CSE/Java 2015. 12. 12. 12:07
멀티 스레드는 여러 절로 구성되어 있습니다.
멀티 스레드 개념
운영체제에서 실행 중인 하나의 어플리케이션을 프로세스(process)라고 부릅니다. 실행에 필요한 메모리를 할당받아 어플리케이션의 코드를 실행하게 됩니다.
다음은 멀티 프로세스와 그에 따른 싱글/멀티 스레드를 그림으로 보겠습니다.
멀티 프로세스는 운영체제에서 할당받은 자신의 메모리를 가지고 실행하기 때문에 서로 독립적입니다. 따라서 하나의 프로세스에서 오류가 발생해도 다른 프로세스에게 영향을 끼치지 않습니다.
하지만 멀티 스레드는 하나의 프로세스 내부에서 생성되기 때문에 하나의 스레드가 예외를 발생시키면 프로세스 자체가 종료될 수 있어 다른 스레드에게 영향을 미치게 됩니다.
멀티 스레드는 아래와 같은 예시를 들 수 있습니다.
- 대용량 데이터의 처리 시간을 줄이기 위해 데이터를 분할해서 병렬로 처리
- UI를 가지고 있는 어플리케이션에서 네트워크 통신
- 다수 클라이언트의 요청을 처리하는 서버
메인 스레드
모든 자바 어플리케이션은 메인 스레드(main thread)가 main() 메소드를 실행하면서 시작됩니다.
메인 스레드는 필요에 따라 작업 스레드들을 만들어서 병렬로 코드를 실행할 수 있습니다. 즉 멀티 스레드를 생성해서 멀티 태스킹을 수행합니다.
다음은 싱글 스레드 어플리케이션입니다.
다음은 멀티 스레드 어플리케이션입니다.
멀티 스레드 어플리케이션에서 실행 중인 스레드가 하나라도 있다면, 해당 프로세스는 종료되지 않습니다.
* 이 포스트은 서적 '이것이 자바다' 를 참고하여 작성한 포스트입니다.
'CSE > Java' 카테고리의 다른 글
[Java] 멀티 스레드 - 상태 & 상태 제어 (0) 2015.12.12 [Java] 멀티 스레드 - 우선순위, 동기화 메소드 (0) 2015.12.12 [Java] 멀티 스레드 - 작업 스레드 (0) 2015.12.12 [Java] 람다식 - 메소드 참조 (0) 2015.09.23 [Java] 람다식 - 표준 API의 함수적 인터페이스2 (0) 2015.09.23 [Java] 람다식 - 표준 API의 함수적 인터페이스1 (0) 2015.09.20