챕터 1. 소개
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
동시성은 한 번에 많은 일을 처리하는 것입니다. 병렬성은 한 번에 많은 작업을 수행하는 것입니다.
Rob Pike
진정으로 어떤 것에 감사하려면, 그것이 어떻게 생겨나게 되었는지, 특히 그 과정에서 어떤 단계를 거쳤고 어떤 어려움을 극복했는지 파악하는 것이 중요합니다. 이러한 이해는 지속적인 진전을 강조할 뿐만 아니라 그 관련성을 이해하는 데도 도움이 됩니다. 마찬가지로 Java 동시성은 처음 시작된 이래로 먼 길을 걸어왔습니다. 현재 상태로 발전하기까지 오랜 시간이 걸렸습니다. 하지만 최신 Java의 가상 스레드 및 구조적 동시성과 같은 최근의 발전을 이해하려면 먼저 그 진화를 살펴봐야 합니다. 이 장에서는 Java 동시성의 초기 모습을 살펴본 다음 시간이 지남에 따라 어떻게 발전해 왔는지 간략하게 논의하겠습니다.
Java 스레드의 간략한 역사
Java( )는 동시성을 염두에 두고 설계되었으며, 멀티스레딩을 기본으로 지원하는 최초의 언어 중 하나입니다. 수년에 걸쳐 Java의 동시성 기능은 개선되고 개선되어 왔으며, 그 과정에서 몇 가지 문제점과 교훈을 남겼습니다.
Java 동시성은 기본적인 동기화 및 스레드 관리에서 시작되었습니다. 그 후 Java 5에 java.util.concurrent 패키지가 도입되면서 실행자 프레임워크, 잠금, 동시 컬렉션과 같은 중요한 새 기능이 추가되었습니다. 그 후, Java 7에 Fork/Join 프레임워크가 도입되면서 Java는 멀티코어 프로세서의 동시성 성능을 활용하게 되었습니다. 그리고 가장 최근에는 Project Loom을 통해 Java는 경량 사용자 모드 스레드와 구조화된 동시성을 통해 기존 스레드 기반 동시성의 복잡성과 한계를 해결하여 궁극적으로 동시 개발을 더 간단하고 효율적으로 만드는 것을 목표로 삼았습니다.
이러한 진화가 중요한 이유는 무엇일까요? Java의 동시성 이야기가 어떻게 전개되는지 살펴보면서, 우리는 점점 더 복잡해지는 상황에서 더 높은 효율성과 단순화된 프로그래밍을 끊임없이 추구해 온 것을 발견하게 됩니다. 이 이야기는 단순히 Java를 넘어 소프트웨어 개발의 궤적과 Java의 지속적인 열망을 반영합니다.
이 진화에 대해 자세히 알아보고 Java 동시성에서 이룬 진전을 감상해 보시기 바랍니다.
Java는 스레드로 만들어집니다.
동시성 은 언어의 핵심 차별화 요소인 스레드 기능을 내장하고 출시된 언어인 Java의 명시적인 설계 목표였습니다. 이를 통해 개발자는 동시성을 달성하기 위해 운영 체제별 기능에 대한 의존성을 제거할 수 있었습니다.
Java에서 스레드는 실행의 가장 작은 단위입니다. 스레드는 프로그램 내에서 실행되는 독립적인 실행 경로입니다. 스레드는 동일한 주소 공간을 공유하므로 프로그램의 동일한 변수와 데이터 구조에 액세스할 수 있습니다. 그러나 각 스레드는 자체 프로그램 카운터, 스택 및 로컬 변수를 유지하므로 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access