๋งˆํ”ผ์•„ ๊ฒŒ์ž„ ๋ฌธ์ œํ•ด๊ฒฐ๊ณผ์ •

2024. 3. 5. 20:47ยท ๐Ÿ’กํ”„๋กœ์ ํŠธ ๋ฌธ์ œํ•ด๊ฒฐ
๋ชฉ์ฐจ
  1. ใ… ConcurrentModificationException ์˜ˆ์™ธ

ใ… ConcurrentModificationException ์˜ˆ์™ธ

ํˆฌํ‘œ๊ธฐ๋Šฅ์œผ๋กœ ์†Œ์ผ“์„ ์ข…๋ฃŒํ•˜๋ฉด ๋ฐœ์ƒํ•˜๋Š” ์Šค๋ ˆ๋“œ ์˜ˆ์™ธ + ๋งˆ์ง€๋ง‰์— ํˆฌํ‘œํ•œ ํด๋ผ์ด์–ธํŠธ ์˜ˆ์™ธ ๋ฐœ์ƒ

์†Œ์ผ“์„ ์ข…๋ฃŒํ•˜๋ฉด ๋งˆ์ง€๋ง‰์— ํˆฌํ‘œํ•œ ํด๋ผ์ด์–ธํŠธ์™€ ์ตœ๋Œ€๋“ํ‘œ๋ฅผ ์–ป์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉฐ ๊ฒŒ์ž„์ด ๋ฉˆ์ถ˜๋‹ค.

์•„๋ž˜๋Š” ConcurrentModificationException๊ฐ€ ๋ฐœ์ƒํ–ˆ์„๋•Œ ์ฝ˜์†”๋กœ ํ‘œ์‹œํ•œ ๋‚ด์šฉ

๋”๋ณด๊ธฐ
Exception in thread "Thread-0" java.util.ConcurrentModificationException
	at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1597)
	at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1620)
	at last.controll.MafiaGameController$Handler.run(MafiaGameController.java:115)
Exception in thread "Thread-6" java.util.ConcurrentModificationException
	at java.base/java.util.HashMap$HashIterator.nextNode(HashMap.java:1597)
	at java.base/java.util.HashMap$KeyIterator.next(HashMap.java:1620)
	at last.controll.MafiaGameController.broadcast(MafiaGameController.java:593)
	at last.controll.MafiaGameController.ClientOut(MafiaGameController.java:463)
	at last.controll.MafiaGameController.dayTime(MafiaGameController.java:143)
	at last.controll.MafiaGameController$Handler.run(MafiaGameController.java:96)

 

List์™€ Map์˜ ์ปฌ๋ ‰์…˜์„ ์ˆ˜์ •ํ•จ๊ณผ ๋™์‹œ์— ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ์ด๋‹ค.

๋‚˜์˜ ๊ฒฝ์šฐ์—๋Š” 2๊ฐ€์ง€๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ๋‹ค.

1) for each๋ฌธ์—์„œ ๊ฐ์ฒด๊ฐ€ ์ˆ˜์ •(์†Œ์ผ“์ข…๋ฃŒ)๋˜๋ฉด์„œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ๋Š” ์ข…๋ฃŒ๋  ์Šค๋ ˆ๋“œ์— ๊ฐ„์„ญํ•˜์—ฌ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ

2) Map ์ปฌ๋ ‰์…˜์„ remove ํ•˜๋Š” ๋ถ€๋ถ„์ด ํ•œ ๊ฐœ ๋ˆ„๋ฝ๋˜์–ด ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ

์ฒ˜์Œ์—” sleep์œผ๋กœ ๊ฐ•์ œ๋กœ  ์ผ์‹œ์ •์ง€ํ•ด์„œ ์Šค๋ ˆ๋“œ ๊ฐ„์„ญ์„ ์ค„์ด๋ ค๊ณ  ํ–ˆ์ง€๋งŒ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ค‘ ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ์˜ˆ์™ธ ๋ฐœ์ƒ

 

1๋ฒˆ๋ถ€ํ„ฐ ForEach๋ฌธ -> iterator๋กœ ๋ฐ”๊พธ์–ด ํ™•์ธํ•ด ๋ณด๋‹ˆ 2๋ฒˆ์ด ์˜ˆ์™ธ๋ฐœ์ƒ๋˜์–ด 2๋ฒˆ๊นŒ์ง€ ์ˆ˜์ •ํ•˜์—ฌ ์˜ˆ์™ธ๋ฐœ์ƒ์„ ํ•ด๊ฒฐ

2๋ฒˆ์„ ํ•ด๊ฒฐํ•˜๊ณ  1๋ฒˆ์„ ForEach๋ฌธ์œผ๋กœ ๋ณต๊ตฌํ•˜์—ฌ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๋ฐ˜๋“œ์‹œ ์˜ˆ์™ธ ๋ฐœ์ƒ์€ ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌ iterator๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ๋ ๋งŒํ•œ ์š”์†Œ๋ฅผ ๋ฏธ๋ฆฌ ์ œ๊ฑฐ

 

 

 

 

 

 

 

 

 

๋น์บ  1์ฐจ ํ”„๋กœ์ ํŠธ ํšŒ๊ณ ๋ก

๋‚˜๋Š” ๊ทธ๋ ‡๊ฒŒ ์กฐ์ ธ์กŒ๋‹ค.

velog.io

 

'๐Ÿ’กํ”„๋กœ์ ํŠธ ๋ฌธ์ œํ•ด๊ฒฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์˜ค๋ Œ์ง€ํŒŒ์ด ์ด์Šˆ ์™€์ดํŒŒ์ดํ• ๋‹น๊ณ ์ •  (0) 2025.02.15
์˜ค๋ Œ์ง€ํŒŒ์ด ์ด์Šˆ ์™€์ดํŒŒ์ด ์—ฐ๊ฒฐ์ด ์•ˆ ๋  ๋•Œ  (0) 2025.02.15
๋น„ํŠธ์บ ํ”„ ํŒŒ์ด๋„ ํ”„๋กœ์ ํŠธ ์ด์Šˆ  (0) 2024.07.09
  1. ใ… ConcurrentModificationException ์˜ˆ์™ธ
'๐Ÿ’กํ”„๋กœ์ ํŠธ ๋ฌธ์ œํ•ด๊ฒฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ์˜ค๋ Œ์ง€ํŒŒ์ด ์ด์Šˆ ๋ถ€ํŒ…์‹œ๋…ธ๋“œ๋ฒ„์ „ ๋‚ฎ์Œ
  • ์˜ค๋ Œ์ง€ํŒŒ์ด ์ด์Šˆ ์™€์ดํŒŒ์ดํ• ๋‹น๊ณ ์ •
  • ์˜ค๋ Œ์ง€ํŒŒ์ด ์ด์Šˆ ์™€์ดํŒŒ์ด ์—ฐ๊ฒฐ์ด ์•ˆ ๋  ๋•Œ
  • ๋น„ํŠธ์บ ํ”„ ํŒŒ์ด๋„ ํ”„๋กœ์ ํŠธ ์ด์Šˆ
mmmhmm
mmmhmm
๋„ค๋ชจํ•˜๋‚˜ ๋™๊ทธ๋ผ๋ฏธ ๋‘๊ฐœ
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
mmmhmm
hmmumm
mmmhmm
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (50)
    • ๐Ÿ–ฅ๏ธํ”„๋กœ์ ํŠธ (3)
    • ๐Ÿ’กํ”„๋กœ์ ํŠธ ๋ฌธ์ œํ•ด๊ฒฐ (6)
    • ๐Ÿ”ฆ๊ณต๋ถ€ ๋ฌธ์ œํ•ด๊ฒฐ๊ณผ์ • (2)
    • ๐Ÿ“–์Šคํ„ฐ๋”” (38)
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (10)
      • ์Šคํ”„๋ง (6)
      • ๋„คํŠธ์›Œํฌ (10)
      • ์šด์˜์ฒด์ œ (12)
hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.2
mmmhmm
๋งˆํ”ผ์•„ ๊ฒŒ์ž„ ๋ฌธ์ œํ•ด๊ฒฐ๊ณผ์ •
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.