Synchronization Issue
-
[Thread] ๋์์ฑ ์ด์(Synchronization Issue), ์ฐ๋ ๋๋ก์ปฌ(ThreadLocal), ์ฐ๋ ๋ํ(ThreadPool), ์ฐ๋ ๋์ ์์ ํ ์ค๊ณ(ThreadSafe)์ ๋ํ ๊ณต๋ถ ๊ธฐ๋ก๊ฐ๋ฐ/Java 2022. 4. 23. 21:54
๐ก๋์์ฑ ์ด์๋ ๋ฌด์์ธ๊ฐ? ๋์์ฑ ์ด์๋ ์ฌ๋ฌ ์ฐ๋ ๋๊ฐ ๋์์ ๊ฐ์ ์ธ์คํด์ค์ ํ๋ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ์๋ฏธํ๋ค. ๊ฐ์ฅ ๋ํ์ ์ธ ์๋ก ์ฑ๊ธํค(Singleton) ํจํด์ ์๋ก ๋ค ์ ์๋ค. โ ์ฑ๊ธํค(Singleton) ํจํด์ด๋? ์ฑ๊ธํค์ด๋ ์ด๋ค ํด๋์ค๊ฐ ์ต์ด ํ๋ฒ๋ง ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๊ณ (Static) ๊ทธ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ฌ์ฉํ๋ ๋์์ธ ํจํด์ ์๋ฏธํ๋ค. ์ฆ, ์์ฑ์์ ํธ์ถ์ด ๋ฐ๋ณต์ ์ผ๋ก ์ด๋ค์ ธ๋ ์ค์ ๋ก ์์ฑ๋๋ ๊ฐ์ฒด๋ ์ต์ด ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ๋ฐํ ํด์ฃผ๋ ๊ฒ์ด๋ค. ์๋์ ์ฝ๋๋ฅผ ๋ณด์. @Service public class UserService { private static UserId userId; // ์ํ ๊ฐ public void createUser(User user) { // ์ฌ๊ธฐ์ use..