[Java] ThreadLocal

์ผ๋ฐ˜ ๋ณ€์ˆ˜๋Š” ํŠน์ • ์ฝ”๋“œ ๋ธ”๋ก๋‚ด์˜ ๋ฒ”์œ„์—์„œ๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ThreadLocal์€ ์“ฐ๋ ˆ๋“œ ์˜์—ญ์— ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์“ฐ๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ์—์„œ ๊ทธ ์“ฐ๋ ˆ๋“œ์— ์„ค์ •๋œ ๋ณ€์ˆ˜ ๊ฐ’์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ธ์ œ์“ฐ์ผ๊นŒ์š” ?

ThreadLocal์€ ํ•œ ์“ฐ๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์“ฐ๋ ˆ๋“œ์™€ ๊ด€๋ จ๋œ ์ฝ”๋“œ์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๊ฐ์ฒด๋ฅผ ์ „ํŒŒํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฐฉ๋ฒ•

  1. ThreadLocal ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
  2. set()๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ํ˜„์žฌ ์“ฐ๋ ˆ๋“œ์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ €์žฅ
  3. get()๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ํ˜„์žฌ์“ฐ๋ ˆ๋“œ์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜ ๊ฐ’์„ ์ฝ์–ด์˜ด
  4. remove()๋ฅผ ์ด์šฉํ•ด ํ˜„์žฌ ์“ฐ๋ ˆ๋“œ์˜ ๋กœ์ปฌ ๋ณ€์ˆ˜ ๊ฐ’์„ ์‚ญ์ œํ•œ๋‹ค.

โ€ป์ฃผ์˜์‚ฌํ•ญ - ์“ฐ๋ ˆ๋“œ ํ’€ ํ™˜๊ฒฝ์—์„œ ThreadLocal์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ThreadLocal์— ๋ณด๊ด€๋œ ๋ฐ์ดํ„ฐ์˜ ์‚ฌ์šฉ์ด ๋๋‚˜๋ฉด ๋ฐ˜๋“œ์‹œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์“ฐ๋ ˆ๋“œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐธ์กฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฐ๊ด€ ํฌ์ŠคํŠธ