프로세스와 스레드
프로세스(Process) : 운영체제에서는 실행 중인 하나의 애플리케이션
- 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행
하나의 애플리케이션은 다중 프로세스를 만들기도 한다 .
Chrome 브라우저를 두개 실행 했다면 두 개의 Chrome 프로세스 생성
프로그램 -> 실행 프로세스
-> 실행 프로세스
멀티 태스킹 : 두 가지 이상의 작업을 동시에 처리하는 것, 운영체제는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당 , 병렬로 실행
워드로 문서작업을 하면서 동시에 윈도우 미디어 플레이로 음악을 들을수 있다.
멀티 태스킹은 꼭 멀티 프로세스를 뜻하지는 않는다.
한 프로세스 내에서 멀티 태스킹을 할수 있도록 만들어진 애플리케이션들도 있다.
미디어 플레이어와 메신저
미디어 플레이어는 동영상 재생과 음악 재생이라는 두 작업을 동시에 처리
메신저는 채팅 기능을 제공하면서 동시에 파일 전송 기능 수행
하나의 프로세스가 두 가지 이상의 작업을 처리? -> 멀티 스레드
스레드(thread)는 사전적 의미로 한 가닥의 실
한 가지 작업을 실행하기 위해 순차적으로 실행할 코드를 실처러 이어 놓았다고 해서 유래된 이름
하나의 스레드는 하나의 코드 실행 흐름이기 때문에 한 프로세스 내에 스레드가 두개라면 두개의 코드 실행 흐름 생김
멀티 프로세스가 애플리케이션 단위의 멀티 태스킹이라면 멀티 스레드는 애플리케이션 내부에서의 멀티 태스킹
멀티 프로세스 들은 운영체제에서 할당받은 자신의 메모리를 가지고 실행 -> 서로 독립적
하나의 프로세스에서 오류가 발생해도 다른 프로세스에게 영향을 미치지 않는다.
멀티 스레드는 하나의 프로세스 내부에 생성
하나의 스레드가 예외를 발생시키면 프로세스 자체 종료 -> 다른 스레드 영향
ex) 워드, 엑셀 하나가 먹통이여도 여전히 사용 가능
But 메신저의 경우 파일을 전송하는 스레드에서 예외 발생 -> 메신저 프로세스 자체 종료 -> 채팅 스레드 같이 종료
그렇기 때문에 멀티 스레드에서는 예외 처리 만전을 기해야 함.
멀티 스레드는 다양한 곳 사용.
대용량 데이터의 처리 시간을 줄이기 위해 데이터를 분할해서 병렬로 처리하는 곳에서 사용
UI를 가지고 있는 애플리케이션에서 네트워크 통신을 하기 위해 사용
다수 클라이언트의 요청을 처리하는 서버를 개발할 때에도 사용
멀티 스레드는 애플리케이션을 개발하는데 꼭 필요한 기능
메인 스레드
모든 자바 애플리케이션은 메인 스레드 (main thread)가 main()메소드를 실행하면서 시작
메인 스레드는 main() 메소드의 첫 코드부터 아래로 순차적으로 실행,
main()메소드의 마지막 코드를 실행하거나 return 문을 만나면 실행이 종료
메인 스레드는 필요에 따라 작업 스레드들을 만들어서 병렬로 코드를 실행
즉, 멀티 스레드를 생성해서 멀티 태스킹을 수행한다
메인 스레드가 작업 스레드 1을 생성하고 실행
곧이어 작업 스레드 2를 생성 하고 실행
싱글 스레드 애플케이션에서는 메인 스레드가 종료하면 프로세스도 종료
멀티 스레드 애플리케이션에서는 실행 중인 스레드가 하나라도 있다면
프로세스는 종료 되지 않는다.
메인 스레드가 작업 스레드 보다 먼저 종료되더라도 작업 스레드가 계속 실행 중이라면 프로세스는 종료되지 않는다.
'Back-end > 이것이 자바다[신용권 한빛미디어]' 카테고리의 다른 글
스레드 우선순위 (0) | 2021.11.27 |
---|---|
작업 스레드 생성과 실행 (0) | 2021.11.24 |
java.time 패키지 (0) | 2021.10.25 |
Format 클래스 (0) | 2021.10.24 |
Date, Calender 클래스 (0) | 2021.10.24 |