일단 씻고 나가자

24.06.12 본문

Study/닥치는 대로 주워 담기

24.06.12

일단 씻고 나가자 2024. 6. 12. 21:35

2023. 06. 12 수요일

 

- [Effective Java] 동시성으로 일어날 수 있는 문제? Java Spring에서의 해결법과 설명?

: 동시성이란 같은 자원에 각기 다른 스레드 및 프로세스가 접근하여 자원이 최신화되기 전에 서로 자원을 갱신하여 올바른 로직을 수행하지 못하는 현상으로, 갱신 손실 문제를 유발한다.

 

Java는 전통적으로 synchronized라는 키워드를 제공한다. , 해당 키워드는 성능 문제가 있을 뿐 아니라, 하나의 프로세스 내에서만 동시성을 보장하기에 실무에서의 scale up 된 하나 이상의 서버에서 작동하지 못한다. 또한 Spring에선, sychronized는 메서드 시그니처가 아니기 때문에 Spring@Transactional과 함께 사용할 경우 Spring의 프록시 객체의 함수 수행에는 붙지 않으므로 해결할 수 없다.

 

트랜잭션 격리 수준은 두 개의 프로세스가 동시에 쓰기 작업을 할 땐 적합하지 않다. 따라서 데이터에 직접 Lock을 거는 작업이 필요하고, JPA에서 제공하는 @Lock, 혹은 Redis 제공하는 라이브러리를 활용할 수 있다.

 

https://velog.io/@balparang/Transactional%EA%B3%BC-synchronized%EB%A5%BC-%EA%B0%99%EC%9D%B4-%EC%82%AC%EC%9A%A9%ED%95%A0-%EB%95%8C%EC%9D%98-%EB%AC%B8%EC%A0%9C%EC%A0%90

 

https://velog.io/@evan523/SpringBoot-%EB%8F%99%EC%8B%9C%EC%84%B1-%EC%9D%B4%EC%8A%88-%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95

'Study > 닥치는 대로 주워 담기' 카테고리의 다른 글

24.06.17  (0) 2024.06.17
24.06.13  (1) 2024.06.13
24.06.10  (0) 2024.06.10
23.11.07  (0) 2023.11.08
23.11.01  (0) 2023.11.02