스레드
프로세스 내에서, 더 작은 단위로 독립적으로 실행시키며 제어가 가능한 흐름 의 단위
- 어떠한 프로그램 내에서 (프로세스 내에서 실행되는 흐름의 단위 일반적으로는 하나의 스레드를 가지고있지만
프로그램 환경에 따라 둘이상의 스레드를 동시에 실행 할 수 있다. 이러한 방식을 멀티스레드 라고 한다.
프로세스와 스레드 차이
- 프로세스
완전한 하나의 프로그램이 실행되는것
fork() (자식복제) 를 통해 생성되는 프로세스는 원래의 프로세스와 똑같은 변수와 코드 등 여러면에서 똑같은 복사본이다. 따라서 부모와 똑같은 자식을 생성하기 위해서는 많은 자원이 요구된다.
- 스레드는
부모 프로세스 전체의 복사본을 만들지 않고 필요한 코드 덩어리만을 생성하여 동시에 수행
(생성) 해당 스레드들 모두가 동일 프로그램으로 생성되나 서로 독립되어 실행
(공유) 해당 스레드들 모두가 전역메모리 공간을 함께 공유함
- 따라서 부모 스레드가 갖고 있는 모든 데이터를 완전하게 접근할 수 있기 때문에,
효율적이고 메모리 제약이 있는 시스템에 널리 사용
단점
한 스레드가 제어상에 문제가 생기면 메모리 공간을 공유하기때문에 안전성에 다소 취약하다
멀티 태스킹 멀티 스레드
- 멀티 태스킹
운영체제의 입장에서 동시에 여러 프로세스를 수행하는것
운영체제가 관리의 주체
- 멀티 스레드
하나의 응용 프로그램이 동시에 여러개의 실행 흐름을 만들어 내는 것
하나의 응용 프로그램이 직접 스레드 생성 및 파괴를 관리하게 됨
멀티스레드의 각 스레드마다 제각각 시스템 자원을 사용하게 된다.
'자바' 카테고리의 다른 글
Exception 과 Error (0) | 2023.06.08 |
---|---|
HashMap과 LinkedHashMap (0) | 2021.05.15 |
자바 collection (0) | 2020.05.27 |
자바 개념정리 객체지향이란 (0) | 2020.05.27 |
자바 개념 - 자바의 특징 (0) | 2020.05.27 |
댓글