안녕하세요. 지식공유자 정수원입니다. ^^
저의 강의를 사랑해 주시고 힘이 되어 주시는 수강생분들께 이제 곧 오픈 예정인 새로운 강좌 관련 소식을 전해 드리고자 합니다.
이번에 오픈 할 강좌는
자바 동시성 프로그래밍(Java Concurrency Programming)
(부제: 리액티브 프로그래밍 Part.1)
입니다.
자바의 동시성 프로그래밍은 자바의 여러 기술 중에서도 어렵고 복잡하며 진입장벽이 높은 영역이라 할 수 있습니다.
하지만 현대 소프트웨어 개발에서 멀티스레드 및 동시성 개발 영역은 시스템의 규모가 거대해지고 기술이 발달할수록 더욱 중요한 요소로 떠오르고 있습니다.
그래서 백엔드 개발자라면 반드시 동시성 프로그래밍은 넘어야 할 산이며 자신의 역량을 한 단계 더 끌어올기 위해 필수적으로 거쳐야 할 관문 이라 할 수 있습니다.
이번 강의는 앞으로 제작될 예정인 리액티브 프로그래밍 로드맵에 포함되어 있는 첫 번째 시리즈 강의이며 스프링의 웹 플럭스와 같은 비동기 논블록킹 개념을 깊고 정확하게 이해하기 위한 중요한 기초와 기본을 다지는 밑거름이 될 것입니다.
아무쪼록 이번 자바 동시성 프로그래밍 강의가 여러분들께 동시성 프로그래밍의 세계로 안내하는 좋은 길잡이가 될 수 있기를 바라겠습니다.
오픈 및 강의 정보는 다음과 같습니다.
- 강의 오픈일 : 11 월 21 일 이후 ~ 28 정도로 예상
- 강의 명: 자바 동시성 프로그래밍 - 리액티브 프로그래밍 Part.1
- 강의 수: 약 80강
- 강의 자료 PPT: 약 420장
이번 강의에서 다루는 내용은 다음과 같습니다.
섹션 1. 운영 체제 기본
운영 체제의 기본 원리와 멀티태스킹, 프로세스와 스레드의 차이점을 학습합니다.
또한 Parallel & Concurrent, Context Switch, CPU Bound & I/O Bound, 사용자 모드 & 커널 모드 등 핵심적인 운영 체제 개념을 통해 동시성 프로그래밍의 기초를 이해하고, 스케줄링의 기본 원칙을 배웁니다
섹션 2. Java Thread Fundamentals - 스레드 생성 및 실행 구조
자바에서 스레드를 생성, 실행, 종료 방법을 자세히 배웁니다. 스레드의 생명주기를 각 상태별로 시뮬레이션 하면서 각 상태마다 어떤 특징과 실행흐름으로 가지고 있는지 단계별로 학습합니다.
섹션 3. Java Thread Fundamentals - 스레드 기본 API
자바의 스레드 관련 API에 대한 심층적인 개념과 구조를 설명합니다.
sleep, join, interrupt, priority 등 멀티스레드 구현에 있어 반드시 알아야 할 개념과 네이티브 메서드 실행에 의한 JVM 과 OS 간 연결 구조 및 흐름에 대해 심도있게 학습합니다.
섹션 4. Java Thread Fundamentals - 스레드 활용
실제 프로젝트에서 스레드를 효과적으로 사용하는 방법을 배웁니다.
중단 및 복구 등의 주제를 다루며, 스레드 그룹과 스레드 로컬, 스레드 예외처리 등에 대해 학습합니다.
섹션 5. Synchronization Fundamentals - 동기화 개념
동기화의 기본 개념과 멀티스레딩 환경에서의 중요성을 깊이 있게 학습합니다.
동기화와 CPU 와의 관계, Critical Seciton, 안저한 스레드 구성 등 동기화 기법을 이해하기 위한 기초적인 개념을 심도있게 학습합니다.
섹션 6. Synchronization Fundamentals - 동기화 기법
동기화의 다양한 기법과 그 적용 방법을 심층적으로 다룹니다.
동기화 기법인 뮤텍스, 세마포어, 모니터, Spin Lock 등 락의 개념과 동기화를 사용한 데이터 보호 및 일관성 유지 전략을 배웁니다.
섹션 7. Java Synchronization
자바에서 제공하는 동기화 메커니즘을 심층적으로 학습합니다.
Synchronized 의 개념, 조건 변수, volatile, 교착상태 등을 포함하여 자바에서 제공하는 다양한 동기화 메커니즘을 다룹니다.
섹션 8. Java Locks
자바의 락(Lock) 인터페이스와 다양한 형태의 클래스들을 알아보고 Lock 사용법 및 Lock 을 통한 동기화 문제를 해결하는 방법을 학습합니다.
특히 쓰기락과 읽기락의 특징과 장단점 등을 살펴보고 락의 조건변수 활용법과 실무 예제를 통한 정확한 사용방법을 익힐 수 있도록 합니다.
섹션 9. Java 동기화 도구
자바에서 제공하는 다양한 동기화 도구들을 학습합니다.
Atomic Variables (단일연산변수), Atomic * FieldUpdater(단일연산필드업데이트), 카운트다운 래치, 사이클릭 배리어 등의 도구를 사용한 실질적인 적용 방법을 학습합니다
.섹션 10. 자바 동시성 프레임워크
자바에서 제공하는 Executor, ExecutorService 및 Executors 클래스들의 개념과 특징을 이해하고 스레드 풀을 사용하여 멀티스레드 애플리케이션을 효율적으로 관리하고 최적화하는 방법을 배웁니다.
또한 Future 인터페이스를 통해 비동기 작업의 결과를 어떻게 처리하고 관리하는지에 대한 실무적인 지식을 제공합니다.
이러한 개념들을 실제 사례와 실습을 통해 적용함으로써, 복잡한 동시성 문제를 해결하고, 응답성과 성능이 우수한 자바 애플리케이션을 개발할 수 있게 됩니다.
섹션 11. ThreadPoolExecutor
ThreadPoolExecutor의 원리와 사용 방법을 자세히 배웁니다.
이 섹션에서는 스레드 풀의 생성, 관리, 최적화 방법을 다루며, 스레드 풀을 사용한 효율적인 리소스 관리와 예외 처리 관리 방법 등에 대해 학습하며 전체 아키텍처와 흐름도에 대해 살펴 봅니다
섹션 12: CompletableFuture
자바의 비동기 프로그래밍 기능인 CompletableFuture에 대해 깊이 있게 다룹니다.
자바 8에서 도입된 이 강력한 클래스를 통해, 비동기 프로그래밍의 기본 개념부터 시작하여, 실제 작업 흐름을 구성하고 관리하는 방법을 배울 수 있습니다.
각 세션은 CompletableFuture의 다양한 메서드와 사용 사례를 상세히 설명하며, 예외 처리, 결과 조합, 그리고 비동기 작업 연쇄 등에 대한 실용적인 기법들을 학습합니다.