2385_병렬처리
코루틴과 thread
- 코루틴 : 협력적인(비선점형) 멀티 태스킹
- thread : 선점형 멀티 태스킹
java
-
스레드(Thread)의 관리, 동기화(Synchronization) 기법, 데드락(Deadlock) 해결 전략, 병렬 스트림(Parallel Streams), 비동기 프로그래밍 기능인 CompletableFuture
-
Lock 인터페이스와 구현 클래스들은 더 세밀한 동기화 제어를 가능하게 하며, ReentrantLock은 가장 대표적인 구현체로, 재진입 가능한 락 기능을 제공
-
CountDownLatch, CyclicBarrier, Semaphore 등은 스레드 간 협력을 위한 고급 동기화 메커니즘을 제공
-
volatile 키워드, synchronized 블록, ReentrantLocks, Condition 객체 등 자바의 동기화 메커니즘
-
Atomic 변수, CountDownLatch, CyclicBarrier, Semaphore와 같은 자바의 동시성 유틸리티
-
스레드 풀
- 여러 스레스를 효율적 관리 재사용
- Executor 프레임워크를 통해 구현, 이는 ExecutorService, ScheduledExecutorService와 같은 인터페이스로 구성, Callable과 Future 인터페이스를 활용하여 반환 값이 있는 작업을 처리하고 그 결과를 비동기적으로 받을 수 있음
-
ExecutorService는 스레드 풀의 실행 및 관리를 담당
- submit() 메서드를 사용하여 작업을 스레드 풀에 제출
- shutdown() 또는 shutdownNow() 메서드를 통해 스레드 풀을 안전하게 중단 및 종료
-
Executors 클래스는 다양한 유형의 스레드 풀을 쉽게 생성할 수 있는 팩토리 메서드를 제공하며, ThreadPoolExecutor는 스레드 풀의 구체적인 실행 메커니즘을 제공하여, 다중 작업 처리 시 성능과 자원 활용을 최적화
-
CompletableFuture는 비동기 프로그래밍을 위한 API 구조를 제공하며, 비동기 작업의 시작, 실행, 그리고 결과 조작을 위한 다양한 메서드를 제공하고, 이는 단일 결과 조작부터 복수의 비동기 작업의 조합에 이르기까지 폭넓게 적용
-
Parallel & Concurrent, Context Switch, CPU Bound & I/O Bound, 사용자 모드 & 커널 모드 등 핵심적인 운영 체제 개념을 통해 동시성 프로그래밍의 기초를 이해하고, 스케줄링의 기본 원칙
-
Java Thread Fundamentals - 스레드 생성 및 실행 구조 - 스레드의 생명주기를 각 상태별로 시뮬레이션 하면서 각 상태마다 어떤 특징과 실행흐름
-
Java Thread Fundamentals - 스레드 기본 API - sleep, join, interrupt, priority 등 멀티스레드 구현에 있어 반드시 알아야 할 개념과 네이티브 메서드 실행에 의한 JVM 과 OS 간 연결 구조 및 흐름
-
중단 및 복구 등의 주제를 다루며, 스레드 그룹과 스레드 로컬, 스레드 예외 처리
-
Synchronization Fundamentals - 동기화 개념 - 동기화와 CPU 와의 관계, Critical Seciton, 안저한 스레드 구성 등 동기화 기법을 이해하기 위한 기초적인 개념
-
동기화 기법인 뮤텍스, 세마포어, 모니터, Spin Lock 등 락의 개념과 동기화를 사용한 데이터 보호 및 일관성 유지 전략
-
Synchronized 의 개념, 조건 변수, volatile, 교착상태 등을 포함하여 자바에서 제공하는 다양한 동기화 메커니즘
-
Java Locks - 특히 쓰기락과 읽기락의 특징과 장단점 등을 살펴보고 락의 조건변수 활용법 고려
-
자바 동기화 - Atomic Variables (단일연산변수), Atomic * FieldUpdater(단일연산필드업데이트), 카운트다운 래치, 사이클릭 배리어 등의 도구
-
자바 동시성 - 자바에서 제공하는 Executor, ExecutorService 및 Executors 클래스들의 개념과 특징을 이해하고 스레드 풀을 사용하여 멀티스레드 애플리케이션을 효율적으로 관리
-
Future 인터페이스를 통해 비동기 작업의 결과를 어떻게 처리하고 관리
-
ThreadPoolExecutor - 스레드 풀의 생성, 관리, 최적화 방법을 다루며, 스레드 풀을 사용한 효율적인 리소스 관리와 예외 처리 관리 방법
-
자바의 비동기 프로그래밍 기능 CompletableFuture의 다양한 메서드의 예외 처리, 결과 조합, 그리고 비동기 작업 연쇄 기법