일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Stream
- Java
- SpringBoot
- 스프링
- Kotlin
- spring
- 자바 ORM 표준 JPA 프로그래밍
- 토비의 스프링
- jvm
- 토비의 스프링 정리
- IntellJ
- MSA
- 쿠버네티스
- mysql
- OS
- GC
- 자바
- 이스티오
- K8s
- 보조스트림
- gradle
- Collection
- redis
- 백준
- Real MySQL
- list
- 스트림
- thread
- Stack
- JPA
- Today
- Total
목록동기화 (2)
인생을 코딩하다.
ThreadLocal Oracla Docs에서는 ThreadLocal 클래스를 다음과 같이 설명한다. ThreadLocal 클래스는 thread-local 변수들을 제공한다. 이 변수들은 get 또는 set 메소드를 통해 접근하는 각 스레드가 독립적으로 변수의 초기화 된 사본을 가지고 있다는 점에서 다르다. ThreadLocal 인스턴스들은 보통 스레드와 상태를 연결하려고 하는 클래스들의 private static 필드들이다. (예를들어, 유저 ID 또는 트랜잭션 ID) 일반 변수의 수명은 특정 코드 블록(예, 메서드 범위, for 블록 범위 등) 범위 내에서만 유효하다. { int a = 10; ... // 블록 내에서 a 변수 사용 가능 } // 변수 a는 위 코드 블록이 끝나면 더 이상 유효하지 않..
Multi-thread 프로그래밍 동시에 여러 개의 Thread가 수행되는 프로그래밍 Thread는 각각의 작업공간 (context)를 가짐 공유 자원이 있는 경우 race condition이 발생 critical section에 대한 동기화(synchronization)의 구현이 필요 쓰레드들이 공유하는 자원 = 쉐어드 리소스 이런 자원의 영역을 critical section 이라고 한다. 이 critical section을 2개의 쓰레드가 접근하게 되었을 때, 만약 critical section 에서 어떤값을 가져와서 더하고 뺀다라고 하면 나중에 더해서 오버라이드 한 값이 무시가 될 수 있다. 그래서 더한 다음에 빼야한다. 결국엔 이런 영역에 관해 순서를 지켜주자는게 동기화다. 이 critical s..