[java] 병행성(Concurrency)과 병렬성(Parallelism)의 차이는?

병행성과 병렬성은 모두 여러 작업을 동시에 처리하는 개념이지만, 그들 간에는 중요한 차이가 있습니다.

병행성(Concurrency)

병행성은 여러 작업이 동시에 실행되는 것처럼 보이는 것을 의미합니다. 하지만 실제로는 한 번에 하나의 작업만 처리됩니다. 이 작업들은 시간을 나눠서 번갈아가며 실행되는데, 이를 context switching이라고 합니다. 병행성은 여러 작업들이 서로 간섭하며 실행되는 것처럼 느껴지기 때문에 서로 독립적이지 않은 작업들 사이에서 유용하게 사용됩니다.

병렬성(Parallelism)

병렬성은 여러 작업이 동시에 실행되고, 실제로 여러 개의 프로세서나 코어를 사용하여 동시에 처리되는 것을 의미합니다. 하나의 작업을 여러 개의 작은 작업으로 분리하고, 각각을 병렬적으로 처리함으로써 작업 속도를 향상시킵니다. 이를 통해 작업들 간에 독립성을 유지하며, 빠른 처리 속도를 얻을 수 있습니다.

결론

병행성과 병렬성은 모두 동시에 여러 작업을 처리하는 개념이지만, 병행성은 작업들이 번갈아가면서 실행되는 것이고, 병렬성은 작업들이 동시에 병렬적으로 실행되는 것입니다. 각각의 사용 시나리오에 맞게 적절히 사용하여 성능과 효율성을 극대화할 수 있습니다.


참고 자료: