SERIES

Java의 동시성 프로그래밍

5 Posts·Last updated on September 19, 2023

Java의 동시성 프로그래밍 - overview

August 14, 2023

synchronized 락의 단점 락이 걸린 객체에서 일어나는 동기화 작업은 모두 균등하게 취급된다. 락 획득/해제는 반드시 메서드 수준이나 메서드 내부의 동기화 블록 안에서 이루어져야 한다. 락을 얻지 못한 스레드는 블로킹된다. 락을 얻지 못할 경우, 락을 얻어 처리를 계속하려고 시도하는 것조차 불가능하다. 락이 걸린 데이터에 모든 연산이 동등하게 취급…


웹 서버를 위한 동시성 프로그래밍 모델

September 07, 2023

동시성 프로그래밍 모델 동시성은 여러 태스크가 동시에 실행된다는 시스템 속성이다. 또한 태스크들 사이에서 상호 작용을 수행할 수 있다. 이러한 동시성은 단일 코어 프로세서부터 멀티 코어 프로세서, 다중 프로세서, 그리고 분산 시스템까지 다양한 컴퓨팅 환경에서 구현될 수 있다. 주 목적은 사용자의 응답성을 향상시키고 처리량을 증가시키는 것이다. 동시성은 주…


Java의 동시성 프로그래밍 - Executor

September 17, 2023

Executor Task는 논리적인 작업 단위이며, 스레드는 Task를 비동기적으로 실행할 수 있는 기술이다. Java에서는 Task 실행을 추상화하여 Executor 라는 인터페이스를 제공한다. Executor는 다양한 Task 실행 정책을 지원하는 비동기 프레임워크에 기반이 된다. Executor 구현은 통계 수집, 애플리케이션 관리 및 모니터링을 추…


Java의 동시성 프로그래밍 - Deadlock

September 18, 2023

DeadLock 스레드 A각 잠금 L을 점유하고 있고 잠금 M을 획득하려고 시도하는 동시에 스레드 B가 잠금 M을 보유하고 있고 잠금 L을 획득하려고 시도하면 두 스레드는 영원히 대기하게 된다. 이러한 상황을 데드락이라고 한다. lock-ordering deadlocks 아래 코드는 leftRight(), rightLeft 메서드가 left, right …


Java의 동시성 프로그래밍 - Lock

September 19, 2023

ReentrantLock 고유락(intrinsic locking, synchronized lock. monitor lock)과 달리 ReentrantLock은 폴링, 타임아웃, 인터럽트 가능한 잠금 획득을 선택할 수 있으며, 모든 잠금 및 해제 연산이 명시적이다. 아래 Lock 인터페이스는 추상적인 잠금 연산을 정의한다. ReentrantLock은 Loc…