일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- MSA
- redis
- JavaScript
- 디자인 패턴
- Java
- 알고리즘
- Data Structure
- OS
- c언어
- Spring
- design pattern
- 자바
- JPA
- IT
- mongoDB
- 네트워크
- react
- Algorithm
- 컴퓨터구조
- Heap
- 운영체제
- Proxy
- 파이썬
- 자료구조
- Galera Cluster
- Kafka
- C
- MySQL
- 백준
- spring webflux
- Today
- Total
목록CAS (2)
시냅스

이 글에서는 개인적으로 자주 사용하는 동시성 제어를 위한 Java 의 Locking 기법에 대해 설명합니다. StampedLockStampedLock 은 ReentrantReadWriteLock 과 달리 재진입이 불가능하며 낙관적 읽기가 가능합니다. ReentrantReadWriteLock 은 하나의 thread 에서 동일한 lock 을 여러번 잡을 수 있게 설계되어있습니다.private final ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();private final Lock readLock = rwLock.readLock();private final Lock writeLock = rwLock.writeLock();private int va..

Lock Striping 스레드 동기화는 공유하는 데이터에 대해 데이터 일관성을 보장하기 위해 사용된다. 그러나 스레드 동기화는 성능에 영향을 미치기 때문에 동기화를 최소한으로 유지하면서 스레드 안정성을 보장하는 것이 중요하다. Lock Striping 은 이를 위한 방법 중 하나로 여러 개의 락을 사용하는 대신, 락을 분할하여 동시에 여러 스레드가 접근할 수 있도록 한다. e.g. ConcurrentHashMap에서 특정 노드에 잠금을 거는 것 Lock Striping 은 스레드 경합을 줄이고 락의 사용 빈도를 줄이기 때문에 성능을 향상시킬 수 있다. ConcurrentHashMap 등에서 사용하고 있다. Cf. 락 분할 (Lock spilitting)은 하나의 클래스에서 기능적으로 락을 분리해서 사용..