https://youtu.be/kNNHaAaFDs8?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp
📖본 포스팅은 '자바의 정석 - 남궁성 저자' 님의 책과 유튜브 강의를 보고 작성되었습니다.
[프로세스와 쓰레드 (process & thread)]
- 프로세스: 실생 중인 프로그램, 자원(resources)과 쓰레드로 구성된다.
- 쓰레드: 프로세스 내에서 실제 작업을 수행하는 것을 의미한다.
- 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있다.
프로세스 : 쓰레드 = 공장 : 일꾼
- 싱글 쓰레드 프로세드
- 자원 + 쓰레드
- 멀티 쓰레드 프로세스
- 자원 + 쓰레드 + 쓰레드 + .... + 쓰레드
- 일꾼이 여러명이라 더 효과적으로 작업을 처리할 수 있다.
하나의 프로세스를 생성하는 것보다 하나의 새로운 쓰레드를 생성하는 것이 더 적은 비용이 든다.
자바의 경우엔 멀티 쓰레드를 지원하기 때문에 자바를 사용할 땐 이 방법이 훨~씬 효율적이다.
CGI 방식의 경우엔 프로세스를 늘리는 방식을 사용해야 했지만 JAVA의 경우엔 멀티 쓰레드를 지원하기에 쓰레드를 늘리는 방식으로 진행해 java의 인기가 시작되었다는 여담..
[멀티 쓰레드의 장단점]
장점 | 단점 |
시스템 자원을 보다 효율적으로 사용할 수 있다 | 동기화에 주의해야 한다. = 공장을 공유(프로세스를 공유하는 상황을 말함)하는 상황에 문제가 발생한다. |
사용자에 대한 응답성이 향상된다 | 교착 상태가 발생하지 않도록 주의해야 한다. (=망치와 도끼를 교환하려 할 때 대치하고 있는 상황이라 생각하면 편하다.) |
작업이 분리되어 코드가 간결해진다 | 각 쓰레드가 효율적으로 고르게 실행될 수 있게 해야 한다. = 기아(굶어 죽는 것을 의미한다고 생각하면 된다.) |
= 여러 모로 좋다. | = 프로그래밍 할 때 고려해야 할 사항들이 많다. |
- 대부분의 프로그램들이 멀티쓰레드로 작성되어 있다.
- 그러나 멀티쓰레드 프로그램이 장점만 있는 것은 아니다.
'Java > 객체지향' 카테고리의 다른 글
[객체지향][쓰레드/thread] - 싱글 쓰레드와 멀티 쓰레드, 쓰레드의 I/O 블락킹 (0) | 2022.02.28 |
---|---|
[객체지향][쓰레드/thread] - 쓰레드구현과 실행 (0) | 2022.02.26 |
[객체지향][애너테이션/Annotation] - 애너테이션 타입 정의하기, 애너테이션의 요소 (0) | 2022.02.25 |
[객체지향][애너테이션/Annotation] - 메타 애너테이션(Meta Annotation) (0) | 2022.02.25 |
[객체지향][애너테이션/Annotation] - 애너테이션(Annotation) (0) | 2022.02.24 |