JAVA/Concurrency

# Java Concurrency and Multithreading Tutorial - Concurrency vs Parallelism

skysoo1111 2020. 1. 31. 15:33

Concurrency(동시성) 및 Parallelism(병렬 처리)라는 용어는 종종 다중 스레드 프로그램과 관련하여 사용된다. 그러나 Concurrency과 Parallelism은 정확히 무엇을 의미하며, 이 두 용어는 어떻게 다른가?

 

Concurrency

Concurrency는 응용 프로그램이 둘 이상의 작업을 동시에 진행하고 있음을 의미한다. 컴퓨터에 CPU가 하나만 있으면 응용 프로그램이 동시에 두 개 이상의 작업을 진행하지 못할 수 있지만, 응용 프로그램 내부에서 한 번에 두 개 이상의 작업이 처리되고 있다. 대신 CPU는 작업이 완료 될 때까지 다른 작업간에 전환한다.

 

Concurrency : 여러 작업이 동시에 진행된다.

내부에서 단일 스레드만 실행하더라도 동시 응용 프로그램을 가질 수 있다. CPU가 작업이 완료될 때까지 작업간 전환을 반복하며 동시에 처리하기 때문이다. 이것은 Thread Ops(동시성 솔루션에 별도의 상태 동일 스레드 시스템을 제공하는 오픈 소스 Java 툴킷) 툴킷의 목표 중 하나이다.

  • 단어장에 추가
     
    • 다음에 대한 단어 목록이 없습니다영어 -> 한국어...
       
    • 새로운 단어 목록 생성...
  • 복사
  • 단어장에 추가
     
    • 다음에 대한 단어 목록이 없습니다한국어 -> 영어...
       
    • 새로운 단어 목록 생성...
  • 복사
  • 단어장에 추가
     
    • 다음에 대한 단어 목록이 없습니다한국어 -> 영어...
       
    • 새로운 단어 목록 생성...
  • 복사

 

Parallelism

병렬 처리는 응용 프로그램이 작업을 작은 하위 작업으로 분할하여 동시에 여러 CPU에서 병렬로 처리 할 수 ​​있음을 의미한다.

Parallelism : 각 작업은 병렬로 처리 할 수있는 하위 작업으로 나뉜다.

진정한 병렬 처리를 달성하려면 응용 프로그램에 둘 이상의 스레드가 실행 중이거나 다른 스레드, 프로세스, CPU, 그래픽 카드 등에서 실행할 작업을 예약 할 수 있어야 한다.

 

즉, Concurrency는 Single CPU에서도 가능하며 이는 CPU가 작업간 전환을 반복하며 여러 작업을 수행하는 것을 의미한다. Single CPU에서 Concurrency는 동시에 수행하는 거처럼 보여지지만 진정한 동시 수행은 아니다.

 

하지만 Parallelism에서는 하위 작업이 개별 CPU를 가지고 병렬로 처리할 수 있어야 함을 의미한다.

 

마지막으로 Concurrency와 Parallelism을 동시에 적용하는 모델도 있지만, Concurrency 및 Parallelism의 이점 중 일부가 손실 될 수 있다. 따라서 오히려 성능이 저하될 수 있다. 적용하려는 응용 프로그램의 상황을 면밀히 분석해서 적절한 모델을 사용해야 할 것이다.

  • 단어장에 추가
     
    • 다음에 대한 단어 목록이 없습니다영어 -> 한국어...
       
    • 새로운 단어 목록 생성...
  • 복사
  • 단어장에 추가
     
    • 다음에 대한 단어 목록이 없습니다한국어 -> 영어...
       
    • 새로운 단어 목록 생성...
  • 복사
  • 단어장에 추가
     
    • 다음에 대한 단어 목록이 없습니다영어 -> 한국어...
       
    • 새로운 단어 목록 생성...
  • 복사
  • 단어장에 추가
     
    • 다음에 대한 단어 목록이 없습니다한국어 -> 영어...
       
    • 새로운 단어 목록 생성...
  • 복사