Skip to content

Latest commit

ย 

History

History
74 lines (62 loc) ยท 2.69 KB

File metadata and controls

74 lines (62 loc) ยท 2.69 KB

java-was-2023

Java Web Application Server 2023

ํ”„๋กœ์ ํŠธ ์ •๋ณด

์ด ํ”„๋กœ์ ํŠธ๋Š” ์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค ๋ฐ•์žฌ์„ฑ๋‹˜์˜ ํ—ˆ๊ฐ€๋ฅผ ๋ฐ›์•„ https://github.com/woowacourse/jwp-was ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•™์Šตํ•œ ๋‚ด์šฉ

์ž๋ฐ” ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  • ์ž๋ฐ”1.0
    • Threadํด๋ž˜์Šค์™€ Runnable ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉ
    • synchronized ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ
  • ์ž๋ฐ”5.0
    • ReentrantLockํด๋ž˜์Šค์™€ Condition์ธํ„ฐํŽ˜์ด์Šค
    • volatile ํ‚ค์›Œ๋“œ
    • concurrentํŒจํ‚ค์ง€
  • ์ž๋ฐ”8
    • Stream API
    • CompletableFutureํด๋ž˜์Šค
  • ์ž๋ฐ”9
    • ๋ฆฌ์•กํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    • Flow API

concurrentํŒจํ‚ค์ง€

  • ์Šค๋ ˆ๋“œ ํ’€
  • ๋ธ”๋กœํ‚น ํ
  • ๋™์‹œ์„ฑ ์ปฌ๋ ‰์…˜
  • Atomic Variables
  • ๋™๊ธฐํ™” ์œ ํ‹ธ๋ฆฌํ‹ฐ
  • ๋™์‹œ์„ฑ ์œ ํ‹ธ๋ฆฌํ‹ฐ

๋™์‹œ์„ฑ๊ณผ ๋ณ‘๋ ฌ์„ฑ

  • ๋™์‹œ์ : ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋…ผ๋ฆฌ์ ์ธ ํ†ต์ œํ๋ฆ„
  • ๋ณ‘๋ ฌ์ : ๋ฌผ๋ฆฌ์ ์ธ ๋ณ‘๋ ฌ๊ณ„์‚ฐ
  • keyword
    • ๋น„๊ฒฐ์ •์„ฑ
    • ๋ฉ”๋ชจ๋ฆฌ ๊ฐ€์‹œ์„ฑ
    • ๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ

์Šค๋ ˆ๋“œ์™€ ์ž ๊ธˆ์žฅ์น˜

  • ์—ฌ๋Ÿฌ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  • ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ๋™๊ธฐํ™” ํ•ด์•ผ ํ•œ๋‹ค.

  • ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ์ž ๊ธˆ์žฅ์น˜(๋ฎคํ…์Šค, ๋ชจ๋‹ˆํ„ฐ ํ˜น์€ ์ž„๊ณ„์˜์—ญ)๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ

  • ์Šค๋ ˆ๋“œ ์ˆœ์„œ๋ฅผ ๊ณ ๋ คํ•œ ๊ฒฐ๊ณผ ์™ธ์—๋„ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

    • ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟˆ์œผ๋กœ์จ ์ •์  ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • JVM์€ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟˆ์œผ๋กœ์จ ๋™์  ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํ•˜๋“œ์›จ์–ด๋„ ์ฝ”๋“œ์˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์ž‘ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์— ๋ณด์ด์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์กด์žฌํ•œ๋‹ค.

  • ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž ๊ธˆ์žฅ์น˜

    • ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ํ•„์š”ํ•œ ์ž ๊ธˆ์žฅ์น˜๋ฅผ ์–ป์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
    • ์ž ๊ธˆ์žฅ์น˜์— ์ˆœ์„œ๋ฅผ ๋งค๊ธด๋‹ค.
    • ์ปค๋‹ค๋ž€ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ๋ชจ๋“  ์ž ๊ธˆ์žฅ์น˜์— ์ˆœ์„œ๋ฅผ ๋งค๊ธฐ๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค.
  • keyword

    • ๋‚ด์žฌ๋œ ์ž ๊ธˆ์žฅ์น˜
    • ๊ฒฝ์Ÿ์กฐ๊ฑด
    • ๋ฉ”๋ชจ๋ฆฌ ๊ฐ€์‹œ์„ฑ
    • ๋ฐ๋“œ๋ฝ(์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž ๊ธˆ์žฅ์น˜)
    • ์ž๋ฐ” ๋ฉ”๋ชจ๋ฆฌ ๋ชจ๋ธ
    • ๋‹ค์ด๋‹ ํ•„๋กœ์†Œํผ ๋ฌธ์ œ
    • double-checked locking ์•ˆํ‹ฐํŒจํ„ด

๋™์ž‘ ๋ฐฉ์‹

  1. ์„œ๋ฒ„์†Œ์ผ“์„ ์—ด๊ณ  ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.
  2. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฐ๊ฒฐ๋˜๋ฉด Runnable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ RequestHandler๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ๋งŒ๋“ ๋‹ค.
  3. ์Šค๋ ˆ๋“œ๋Š” ์Šค๋ ˆ๋“œ ํ’€์„ ํ†ตํ•ด ๊ด€๋ฆฌํ•œ๋‹ค.
  4. Handler์—์„œ๋Š” http get์š”์ฒญ์„ ๋ฐ›์•„ ์ด๋ฅผ ํ•ด์„ํ•˜๊ณ  response๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ธ๋‹ค.