CODEDRAGON ㆍDevelopment/Java
멀티 스레드 장점과 단점
장점 |
단점 |
· 응답성이 좋습니다 · 자원공유를 효율적을 할 수 있습니다. · 작업이 분리되어 코드가 간결해집니다. |
· 구현하기 어렵습니다 · 테스트, 디버깅 하기 어렵습니다. · 전체프로세스에 영향을 줍니다. · 성능 저하가 동반됩니다. · 동기화에 주의해야 합니다. · 교착상태가 발생하지 않도록 주의해야 합니다. · 각 스레드가 효율적으로 고르게 실행될 수 있도록 해야 합니다. |
멀티 스레드는 응답성을 높여줍니다.
- 사용자 대화형 프로그램의 응답성을 높일 수 있습니다.
- 하나의 프로세스의 여러 스레드를 생성하여 스레드에 각기 다른 작업을 하게 함으로써 특정 작업을 하면서도 사용자로부터 명령을 입력받게 할 수 있습니다.
멀티 스레드는 자원공유 효율성을 높여줍니다.
프로세스간 데이터 교환보다 번거로운 작업 없이 더 효율적입니다.
- IPC를 통한 프로세스간 데이터 교환
- 스레드간 데이터 교환
o IPC를 통한 프로세스간 데이터 교환
프로세스간 데이터 교환을 하려면 소켓이나 공유 메모리같은 IPC(Inter Process Communicatin)을 이용해서 데이터 교환을 해야 합니다.
o 스레드간 데이터 교환
프로세스를 뛰우기 위해 메모리와 자원을 할당하는 작업없이 이미 프로세스에 할당된 자원과 메모리를 그대로 사용하여 스레드를 생성하여 작업하므로 메모리와 자원 할당에 필요한 비용을 줄일 수 있습니다.
멀티 스레드에 문제 발생시 전체 프로세스가 영향을 받습니다.
- 멀티프로세스 구조
- 멀티스레드 구조
o 멀티프로세스 구조
멀티프로세스 구조에서 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스 하나만 죽는 것 이상으로 다른 곳에 영향이 확산되지 않습니다.
o 멀티스레드 구조
멀티스레드 구조에서 자식 스레드중 하나에 문제가 생긴 경우 전체 프로세스가 영향을 받게 됩니다.
성능 저하
- 너무 많은 스레드를 생성해서 사용하는 경우 성능이 더 떨어질 수 있습니다.
- 스레드가 CPU를 사용하기 위해서는 작업간 전환(Context Switching)을 해야 하는데, 이 작업간 전환은 많은 비용을 소모하는 작업입니다.
'Development > Java' 카테고리의 다른 글
스트림(Stream), 자바 스트림의 큰 분류, 스트림의 특징 (0) | 2016.02.19 |
---|---|
자원 공유 문제 (0) | 2016.02.18 |
How tomcat works - 자바 웹 개발자를 위한 e-book (0) | 2016.02.03 |
Error-type parameters are only avaliable if source level is 1.5 or greater (0) | 2016.01.30 |
Java 8 Streams cheat sheet (0) | 2016.01.30 |