# 자바 동시성 프로그래밍

* **운영 체제 기본 지식**
  * [프로세스와 스레드](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/os/ProcessThread.md)
  * [동시성과 병렬성](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/os/Concurrency.md)
  * [Context Switching](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/os/Context%20Switching.md)
  * [CPU Bound & I/O Bound](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/os/Bound.md)
  * [사용자 모드 & 커널 모드](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/os/KernelMode.md)
  * [사용자 수준 스레드 & 커널 수준 스레드](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/os/LevelThread.md)
* **Java Thread(스레드 생성 및 실행 구조)**
  * [스레드 생성](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javathread/%EC%83%9D%EC%84%B1/%EC%8A%A4%EB%A0%88%EB%93%9C%EC%83%9D%EC%84%B1.md)
  * [스레드 실행 및 종료](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javathread/%EC%83%9D%EC%84%B1/startrun.md)
  * [스레드 생명 주기와 상태](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javathread/%EC%83%9D%EC%84%B1/state.md)
* **Java Thread(스레드 기본 API)**
  * [`sleep()`](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javathread/api/sleep.md)
  * [`join()`](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javathread/api/join.md)
  * [`interrupt()` & `interrupted()` & `isInterrupted()`](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javathread/api/interrupt.md)
  * [`name()` & `currentThread()` & `isAlive()`](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javathread/api/name.md)
  * [Priority](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javathread/api/Priority.md)
* **Java Thread(스레드 활용)**
  * [스레드 예외처리(`UncaughtExceptionHandler`)](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javathread/%ED%99%9C%EC%9A%A9/UncaughtExceptionHandler.md)
  * [스레드 중지](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javathread/%ED%99%9C%EC%9A%A9/stop.md)
  * [사용자 스레드와 데몬 스레드](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javathread/%ED%99%9C%EC%9A%A9/Daemod.md)
  * [ThreadGroup](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javathread/%ED%99%9C%EC%9A%A9/ThreadGroup.md)
  * [ThreadLocal](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javathread/%ED%99%9C%EC%9A%A9/ThreadLocal.md)
* **동기화 개념**
  * [싱글 스레드와 멀티 스레드](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/synchronization/%EA%B0%9C%EB%85%90/singleMultiThread.md)
  * [동기화와 CPU 관계](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/synchronization/%EA%B0%9C%EB%85%90/CPU.md)
  * [임계 영역](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/synchronization/%EA%B0%9C%EB%85%90/CriticalSection.md)
  * [안전한 스레드 구성](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/synchronization/%EA%B0%9C%EB%85%90/ThreadSafe.md)
* **동기화 기법**
  * [뮤텍스](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/synchronization/%EA%B8%B0%EB%B2%95/Mutex.md)
  * [세마포어](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/synchronization/%EA%B8%B0%EB%B2%95/Semaphore.md)
  * [모니터](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/synchronization/%EA%B8%B0%EB%B2%95/Monitor.md)
  * [SpinLock](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/synchronization/%EA%B8%B0%EB%B2%95/SpinLock.md)
* **Java Synchronization**
  * [`synchronized` 기본](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/synchronization/javaSync/%EA%B8%B0%EB%B3%B8.md)
  * [스레드 간 협력(`wait()` & `notify()`)](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/synchronization/javaSync/notify.md)
  * [`volatile`(메모리 동기화)](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/synchronization/javaSync/volatile.md)
  * [교착 상태(DeadLock)](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/synchronization/javaSync/Deadlock.md)
* **Java Locks**
  * [Lock & ReentrantLock](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/locks/ReentrantLock.md)
  * [ReadWriteLock & ReentrantReadWriteLock](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/locks/ReentrantReadWriteLock.md)
  * [Condition](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/locks/Condition.md)
* **Java 동기화 도구**
  * [CAS(Compare and Swap)](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javaSync/CAS.md)
  * [Atomic Variable](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javaSync/Atomic.md)
  * [AtomicFieldUpdater](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javaSync/AtomicFieldUpdater.md)
  * [CountDownLatch](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javaSync/CountDownLatch.md)
  * [CyclicBarrier](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javaSync/CyclicBarrier.md)
* **Java 동시성 프레임워크**
  * [스레드 풀](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javaFramework/ThreadPool.md)
  * [Executor](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javaFramework/Executor.md)
  * [Runnable & Callable](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javaFramework/Runnable.md)
  * [Future & Callback](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javaFramework/Callback.md)
  * [Future 구조 및 API](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javaFramework/Future.md)
  * [ExecutorService API](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javaFramework/ExecutorService.md)
  * [ScheduledExecutorService](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javaFramework/ScheduledExecutorService.md)
  * [Executors](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/javaFramework/Executors.md)
* **ThreadPoolExecutor 이해**
  * [corePoolSize & maximumPoolSize](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/ThreadPoolExecutor/corePoolSize.md)
  * [keepAliveTime](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/ThreadPoolExecutor/keepAliveTime.md)
  * [BlockingQueue](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/ThreadPoolExecutor/BlockingQueue.md)
  * [RejectedExecutionHandler](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/ThreadPoolExecutor/RejectedExecutionHandler.md)
  * [스레드 풀 Hook 메서드](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/ThreadPoolExecutor/Hook.md)
  * [생명 주기와 상태 & ThreadPoolExecutor 아키텍처](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/ThreadPoolExecutor/LifeCycle.md)
* **비동기 프로그래밍**
  * [동기 vs 비동기 & Blocking vs Non Blocking](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/AsyncProgramming/Blocking.md)
  * [CompletableFuture](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/AsyncProgramming/CompletableFuture.md)
  * [비동기 작업 시작(`supplyAsync()` & `runAsync()`)](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/AsyncProgramming/runAsync.md)
  * [비동기 결과 조작(`thenApply()` & `thenApplyAsync()`)](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/AsyncProgramming/thenApplyAsync.md)
  * [비동기 결과 조작(`thenAccept()` & `thenRun()`)](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/AsyncProgramming/thenRun.md)
  * [비동기 작업 조합(`thenCompose()` & `thenCombine()`)](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/AsyncProgramming/thenCombine.md)
  * [비동기 작업 조합(`allOf()` & `anyOf()`)](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/AsyncProgramming/anyOf.md)
  * [비동기 예외 처리](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/AsyncProgramming/%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC.md)
  * [비동기 완료 처리](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/AsyncProgramming/%EC%99%84%EB%A3%8C%EC%B2%98%EB%A6%AC.md)
  * [비동기 대기 및 취소 처리](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/AsyncProgramming/%EC%B7%A8%EC%86%8C%EC%B2%98%EB%A6%AC.md)
  * [ForkJoinPool](https://github.com/genesis12345678/TIL/blob/main/Java/reactive/AsyncProgramming/ForkJoinPool.md)

> 내용 참고 : [인프런 - 정수원 님의 "자바 동시성 프로그래밍"](https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EB%8F%99%EC%8B%9C%EC%84%B1-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EB%A6%AC%EC%95%A1%ED%8B%B0%EB%B8%8C-part1/dashboard)
