λ™μ‹œμ„± 처리 μ‰½κ²Œ μ΄ν•΄ν•˜κΈ° (synchronized, reentrantLock)
Β·
πŸ’» 개발/πŸ€ Spring
1. λ™μ‹œμ„± μ²˜λ¦¬λŠ” μ™œ ν•˜λŠ”κ±ΈκΉŒ?λ™μ‹œμ„± 처리λ₯Ό ν•˜μ§€ μ•ŠμœΌλ©΄ μœ μ €κ°€ 포인트λ₯Ό λ™μ‹œμ— μΆ©μ „ λ˜λŠ” μ‚¬μš©ν•  λ•Œ 데이터 뢈일치 λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. μ΄λŠ” μ—¬λŸ¬ μŠ€λ ˆλ“œκ°€ 같은 λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•˜λ©΄μ„œ λ°œμƒν•˜λŠ” Race Condition(경쟁 μƒνƒœ) ν˜„μƒμ΄λΌ λ³Ό 수 μžˆλŠ”λ°, Race Conditionμ΄λž€ 곡유 μžμ›μ— λŒ€ν•΄ μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€κ°€ λ™μ‹œμ— 접근을 μ‹œλ„ν•  λ•Œ, μ‹€ν–‰ μˆœμ„œλ‚˜ μ‹œκ°„μ— μ˜ν•΄ κ²°κ³Ό 값에 영ν–₯을 쀄 수 μžˆλŠ” μƒνƒœλ₯Ό λ§ν•©λ‹ˆλ‹€. μ•„λž˜ 그림을 톡해 Race Condition에 λŒ€ν•œ μ˜ˆμ‹œλ₯Ό λ“€μ–΄λ³΄κ² μŠ΅λ‹ˆλ‹€.μœ„ κ·Έλ¦Όκ³Ό 같이 2개의 μŠ€λ ˆλ“œμ—μ„œ μ‹€ν–‰λœ 각각의 νƒœμŠ€ν¬κ°€ pointλΌλŠ” λ³€μˆ˜μ— λ™μ‹œμ— μ ‘κ·Όν•˜μ—¬ μ΄ˆκΈ°κ°’ 0을 μ½μ–΄μ™”μŠ΅λ‹ˆλ‹€. 그리고 각각 500을 λ”ν•˜λŠ” 연산을 μˆ˜ν–‰ν•˜κ³ , point에 κ²°κ³Ό 값을 λŒ€μž…ν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ κΈ°λŒ€μ™€..