{"id":44650,"date":"2020-12-16T13:34:32","date_gmt":"2020-12-16T04:34:32","guid":{"rendered":"https:\/\/www.charlezz.com\/?p=44650"},"modified":"2020-12-16T13:35:07","modified_gmt":"2020-12-16T04:35:07","slug":"%eb%8f%99%ec%8b%9c%ec%84%b1-%ed%94%84%eb%a1%9c%ea%b7%b8%eb%9e%98%eb%b0%8d%ec%97%90%ec%84%9c-%eb%b0%9c%ec%83%9d%ed%95%98%eb%8a%94-%ea%b2%bd%ec%9f%81-%ec%83%81%ed%83%9c-%ec%9e%84%ea%b3%84-%ea%b5%ac","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=44650","title":{"rendered":"\ub3d9\uc2dc\uc131 \ud504\ub85c\uadf8\ub798\ubc0d\uc5d0\uc11c \ubc1c\uc0dd\ud558\ub294 \uacbd\uc7c1 \uc0c1\ud0dc, \uad50\ucc29 \uc0c1\ud0dc\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc790"},"content":{"rendered":"<h3>\ub3d9\uc2dc\uc131 \ud504\ub85c\uadf8\ub798\ubc0d(Concurrent Programming)<\/h3>\n<p>\ub3d9\uc2dc\uc131 \ud504\ub85c\uadf8\ub798\ubc0d\uc740 \uc5ec\ub7ec\uac1c\uc758 \uacc4\uc0b0\ub4e4\uc744 \uc5f0\uc18d\uc801\uc73c\ub85c \ud558\ub294 \uac83\uc774 \uc544\ub2cc \ubcd1\ud589 \ucc98\ub9ac\ud558\ub294 \ud504\ub85c\uadf8\ub7a8\uc744 \ub9d0\ud55c\ub2e4. \uc774\ub7ec\ud55c \ub3d9\uc2dc\uc131 \ucf54\ub4dc\ub97c \uc81c\ub300\ub85c \uc791\uc131\ud558\ub294 \uac83\uc740 \uc27d\uc9c0 \uc54a\ub2e4. \ud558\uc9c0\ub9cc \ub3d9\uc2dc\uc131 \ucf54\ub4dc \uc791\uc131\uc744 \ud1b5\ud574 <strong>\uc131\ub2a5 \ud5a5\uc0c1<\/strong>\uc744 \uae30\ub300\ud560 \uc218 \uc788\ub294 \uacbd\uc6b0\uac00 \ub9ce\uae30 \ub54c\ubb38\uc5d0 \ud604\ub300 \ud504\ub85c\uadf8\ub798\ubc0d\uc5d0\uc11c\ub294 \ud544\uc218\uc801\uc778 \uc694\uc18c\ub2e4.<\/p>\n<p>\ub3d9\uc2dc\uc131 \ucf54\ub4dc\ub97c \uc791\uc131\ud560 \ub54c \ubc1c\uc0dd\ud560 \uc218 \uc788\ub294 \uacf5\ud1b5\ub41c \ubb38\uc81c\uc810\ub4e4\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf4\ub3c4\ub85d\ud55c\ub2e4.<\/p>\n<h3>\uacbd\uc7c1 \uc0c1\ud0dc(Race Condition)<\/h3>\n<p><a href=\"https:\/\/ko.wikipedia.org\/wiki\/%EA%B3%B5%ED%95%99\" title=\"\uacf5\ud559\"><\/a>\uacbd\uc7c1 \uc0c1\ud0dc<span>\ub780 \ub458 \uc774\uc0c1\uc758 \uc785\ub825 \ub610\ub294 \uc870\uc791\uc758 \ud0c0\uc774\ubc0d\uc774\ub098 \uc21c\uc11c \ub4f1\uc774 \uacb0\uacfc\uac12\uc5d0 \uc601\ud5a5\uc744 \uc904 \uc218 \uc788\ub294 \uc0c1\ud0dc\ub97c \ub9d0\ud55c\ub2e4. \uc785\ub825 \ubcc0\ud654\uc758 \ud0c0\uc774\ubc0d\uc774\ub098 \uc21c\uc11c\uac00 \uc608\uc0c1\uacfc \ub2e4\ub974\uac8c \uc791\ub3d9\ud558\uba74 \uc815\uc0c1\uc801\uc778 \uacb0\uacfc\uac00 \ub098\uc624\uc9c0 \uc54a\uac8c \ub420 \uc704\ud5d8\uc774 \uc788\ub294\ub370 \uc774\ub97c\u00a0<\/span>\uacbd\uc7c1 \uc704\ud5d8<span>\uc774\ub77c\uace0 \ud55c\ub2e4.<\/span><\/p>\n<p>\ub2e4\uc74c\uc758 \uc608\ub97c \ud1b5\ud574 \uacbd\uc7c1\uc0c1\ud0dc\ub97c \uc774\ud574\ud574\ubcf4\uc790.<\/p>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-racecondition4.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-racecondition4.png\" alt=\"\" width=\"1062\" height=\"556\" class=\"aligncenter size-full wp-image-44656\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-racecondition4.png 1062w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-racecondition4-300x157.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-racecondition4-768x402.png 768w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-racecondition4-1024x536.png 1024w\" sizes=\"(max-width: 1062px) 100vw, 1062px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>\uc544\ub4e4\uc740 \uc740\ud589\uc5d0 10000\uc6d0\uc758 \uc794\uace0\uac00 \uc788\uc5c8\uace0, \ud604\uae08 \uc778\ucd9c\uae30\ub97c \ud1b5\ud574 \uc794\uace0 10000\uc6d0\uc744 \ucd9c\uae08\ud558\uace0 \uc788\ub2e4. \uadf8 \uc0ac\uc774 \uc5c4\ub9c8\ub294 \uc544\ub4e4\uc5d0\uac8c \uc6a9\ub3c8\uc744 5000\uc6d0 \uc785\uae08 \ud574\uc8fc\uc5c8\ub2e4. \uadf8\ub807\ub2e4\uba74 \uc794\uace0\ub294 \uc5bc\ub9c8\uc77c\uae4c?<br \/>\n\uc544\ub4e4\uc740 10000\uc6d0\uc744 \uc778\ucd9c\ud588\uae30 \ub54c\ubb38\uc5d0 \uc794\uace0\ub294 0\uc6d0\uc774 \ub418\uace0, \uc774\ud6c4 \uc5c4\ub9c8\uac00 5000\uc6d0\uc744 \uc785\uae08\ud574\uc8fc\uc2e0 \ub355\ubd84\uc5d0 \uc794\uace0\ub294 5000\uc6d0\uc774 \ub418\ub9ac\ub77c \uae30\ub300\ud560 \uac83\uc774\ub2e4.\u00a0<\/p>\n<p>\uc6b0\ub9ac\uac00 \uc774\ub807\uac8c \uc0dd\uac01\ud560 \uc218 \uc788\ub294 \uc774\uc720\ub294 \uc544\ub4e4\uc774 \uba3c\uc800 \uc778\ucd9c\uc744 \ud558\uace0 \uc5c4\ub9c8\uac00 \uadf8 \ub2e4\uc74c\uc73c\ub85c \uc785\uae08\ud588\uc73c\ub9ac\ub77c \uac00\uc815\ud588\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n<p>\ub9cc\uc57d \uc544\ub4e4\uacfc \uc5c4\ub9c8\uac00 \ub3d9\uc2dc\uc5d0 \ucd9c\uae08 \ubc0f \uc785\uae08\uc744 \uc2dc\ub3c4\ud588\ub2e4\uba74 \uc5b4\ub5bb\uac8c \ub420\uae4c?<\/p>\n<p><strong>\ub3d9\uc2dc\uc5d0 \ucd9c\uae08\uacfc \uc785\uae08\uc774 \uc774\ub8e8\uc5b4\uc9c0\ub294 \uacbd\uc6b0<br \/>\n<\/strong>\uc544\ub4e4\uc758 \uc785\uc7a5 : \ud604\uc7ac\uc794\uace0 10000\uc6d0 &#8211; 10000\uc6d0 \ucd9c\uae08 = <strong>\uae30\ub300\uc794\uace0\u00a00\uc6d0<\/strong><br \/>\n\uc5c4\ub9c8\uc758 \uc785\uc7a5 : \ud604\uc7ac\uc794\uace0 10000\uc6d0 &#8211; 5000\uc6d0 \uc785\uae08 = <strong>\uae30\ub300\uc794\uace0 15000\uc6d0<\/strong><\/p>\n<p>\uc774\ucc98\ub7fc <strong>\uacbd\uc7c1\uc0c1\ud0dc<\/strong>\ub294 \uacf5\uc720 \ub370\uc774\ud130(\uc794\uace0)\uc5d0 \ucd5c\uc885\uac12\uc744 \ubcf4\uc7a5\ud560 \uc218 \uc5c6\ub294 \uc0c1\ud669\uc744 \ub9d0\ud55c\ub2e4. \ucd5c\uc545\uc758 \uc0c1\ud669\uc5d0\ub294 \uc5c4\ub9c8\uac00 5\ucc9c\uc6d0\uc744 \uc785\uae08\ud574\uc8fc\uc5c8\uc73c\ub098 \uc794\uace0\uac00 0\uc6d0\uc774 \ub420 \uc218\ub3c4 \uc788\uace0, \uc544\ub4e4\uc740 10000\uc6d0\uc744 \ucd9c\uae08\ud558\uc600\uc73c\ub098 \uc794\uace0\ub294 15000\uc6d0\uc778 \uc0c1\ud669\uc774 \ub420 \uc218\ub3c4 \uc788\ub294 \uac83\uc774\ub2e4.<\/p>\n<p>\uc774\ub7f0 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uae30 \uc704\ud574 \uc784\uacc4\uad6c\uc5ed\uc744 \uc9c0\uc815\ud558\uace0 \ub3d9\uae30\ud654 \uba54\ucee4\ub2c8\uc998\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n<h4>\uc784\uacc4 \uad6c\uc5ed(Critical Section)<\/h4>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-img1.daumcdn.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-img1.daumcdn.png\" alt=\"\" width=\"659\" height=\"219\" class=\"aligncenter size-full wp-image-44657\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-img1.daumcdn.png 659w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-img1.daumcdn-300x100.png 300w\" sizes=\"(max-width: 659px) 100vw, 659px\" \/><\/a><\/p>\n<p><b>\uc784\uacc4 \uad6c\uc5ed<\/b><span>(<\/span><span lang=\"en\">critical section<\/span><span>) \ub610\ub294\u00a0<\/span><b>\uacf5\uc720\ubcc0\uc218 \uc601\uc5ed<\/b><span>\uc740\u00a0\ubcd1\ub82c\ucef4\ud4e8\ud305<\/span><span>\uc5d0\uc11c \ub458 \uc774\uc0c1\uc758 \uc2a4\ub808\ub4dc<\/span><span>\uac00 \ub3d9\uc2dc\uc5d0 \uc811\uadfc\ud574\uc11c\ub294 \uc548\ub418\ub294 \uacf5\uc720 \uc790\uc6d0(\uc790\ub8cc \uad6c\uc870 \ub610\ub294 \uc7a5\uce58)\uc744 \uc811\uadfc\ud558\ub294 \ucf54\ub4dc\uc758 \uc77c\ubd80\ub97c \ub9d0\ud55c\ub2e4. \uc784\uacc4 \uad6c\uc5ed\uc740 \uc9c0\uc815\ub41c \uc2dc\uac04\uc774 \uc9c0\ub09c \ud6c4 \uc885\ub8cc\ub41c\ub2e4. \ub54c\ubb38\uc5d0 \uc5b4\ub5a4 \uc2a4\ub808\ub4dc(\ud0dc\uc2a4\ud06c \ub610\ub294 \ud504\ub85c\uc138\uc2a4)\uac00 \uc784\uacc4 \uad6c\uc5ed\uc5d0 \ub4e4\uc5b4\uac00\uace0\uc790 \ud55c\ub2e4\uba74 \uc9c0\uc815\ub41c \uc2dc\uac04\ub9cc\ud07c \ub300\uae30\ud574\uc57c \ud55c\ub2e4. \uc2a4\ub808\ub4dc\uac00 \uacf5\uc720\uc790\uc6d0\uc758 \ubc30\ud0c0\uc801\uc778 \uc0ac\uc6a9\uc744 \ubcf4\uc7a5\ubc1b\uae30 \uc704\ud574\uc11c \uc784\uacc4 \uad6c\uc5ed\uc5d0 \ub4e4\uc5b4\uac00\uac70\ub098 \ub098\uc62c\ub54c\ub294 \uc138\ub9c8\ud3ec\uc5b4<\/span><span>\u00a0\uac19\uc740 \ub3d9\uae30\ud654 \ub9e4\ucee4\ub2c8\uc998\uc774 \uc0ac\uc6a9\ub41c\ub2e4.<\/span><\/p>\n<p>\uc704\uc758 \uc740\ud589\uc744 \uc608\ub85c \ub4e4\uba74 \uc740\ud589\uc758 \uc794\uace0\ub294 \uc784\uacc4\uad6c\uc5ed\uc73c\ub85c \uc9c0\uc815\ud558\uc5ec \ub458 \uc774\uc0c1\uc758 \uc2a4\ub808\ub4dc(\uc5c4\ub9c8\uc640 \uc544\ub4e4)\uac00 \ub3d9\uc2dc\uc5d0 \uc811\uadfc\ud558\uc9c0 \ubabb\ud558\uac8c \ub9cc\ub4e4\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n<h4>\uc138\ub9c8\ud3ec\uc5b4(Semaphore)<\/h4>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-img1.daumcdn-1.png\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-img1.daumcdn-1.png\" alt=\"\" width=\"800\" height=\"472\" class=\"aligncenter size-full wp-image-44658\" srcset=\"https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-img1.daumcdn-1.png 800w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-img1.daumcdn-1-300x177.png 300w, https:\/\/charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-img1.daumcdn-1-768x453.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<p><b>\uc138\ub9c8\ud3ec\uc5b4<\/b><span>(Semaphore)\ub294 \uc5d0\uce20\ud5c8\ub974 \ub370\uc774\ud06c\uc2a4\ud2b8\ub77c<\/span><span>\uac00 \uace0\uc548\ud55c, \ub450 \uac1c\uc758 \uc6d0\uc790\uc801 \ud568\uc218\ub85c \uc870\uc791\ub418\ub294 \uc815\uc218 \ubcc0\uc218\ub85c\uc11c, \uba40\ud2f0 \ud504\ub85c\uadf8\ub798\ubc0d\u00a0<\/span><span>\ud658\uacbd\uc5d0\uc11c \uacf5\uc720 \uc790\uc6d0\uc5d0 \ub300\ud55c \uc811\uadfc\uc744 \uc81c\ud55c\ud558\ub294 \ubc29\ubc95\uc73c\ub85c \uc0ac\uc6a9\ub41c\ub2e4. \uc774\ub294\u00a0<\/span><a href=\"https:\/\/ko.wikipedia.org\/wiki\/%EC%B2%A0%ED%95%99%EC%9E%90%EB%93%A4%EC%9D%98_%EB%A7%8C%EC%B0%AC_%EB%AC%B8%EC%A0%9C\" class=\"mw-redirect\" title=\"\ucca0\ud559\uc790\ub4e4\uc758 \ub9cc\ucc2c \ubb38\uc81c\">\ucca0\ud559\uc790\ub4e4\uc758 \ub9cc\ucc2c \ubb38\uc81c<\/a><span>\uc758 \uace0\uc804\uc801\uc778 \ud574\ubc95\uc774\uc9c0\ub9cc \ubaa8\ub4e0 \uad50\ucc29\uc0c1\ud0dc<\/span><span>\ub97c \ud574\uacb0\ud558\uc9c0\ub294 \ubabb\ud55c\ub2e4.<\/span><\/p>\n<p>\ub2e4\uc74c \uc608\uc81c\ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uc790<\/p>\n<pre class=\"lang: decode:true\">@Test\r\nfun count() {\r\n    val count = 10000\r\n    var value = 0\r\n    val thread1 = Thread {\r\n        repeat(count) {\r\n            value++\r\n        }\r\n    }\r\n    val thread2 = Thread {\r\n        repeat(count) {\r\n            value--\r\n        }\r\n    }\r\n    thread1.start()\r\n    thread2.start()\r\n    thread1.join()\r\n    thread2.join()\r\n    println(\"value = $value\")\r\n}<\/pre>\n<p>\ub2e8\uc21c\ud788 \ub450\uac1c\uc758 \uc2a4\ub808\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \uac01\uac01 value\ub97c 10000\ubc88 \uc99d\uac10\uc2dc\ud0a4\ub294 \uc608\uc81c\uc774\ub2e4. \uac01\uac01 10000\ubc88\uc529 \uc99d\uac00 \ubc0f \uac10\uc18c \ud558\uae30 \ub54c\ubb38\uc5d0 value\uac00 0\uc774 \ub098\uc624\uae38 \uae30\ub300\ud558\uc9c0\ub9cc, \uacbd\uc7c1\uc0c1\ud0dc\uac00 \ube48\ubc88\ud788 \ubc1c\uc0dd\ud558\uae30 \ub54c\ubb38\uc5d0 \uc2e4\ud589\ud560 \ub54c\ub9c8\ub2e4 \uacb0\uacfc \uac12\uc774 \ub2e4\ub974\ub2e4.<\/p>\n<p><strong>\uc2e4\ud589\uacb0\uacfc<br \/>\n<\/strong>value = 1916<strong><br \/>\n<\/strong><\/p>\n<p>\uc774\uc81c \uc138\ub9c8\ud3ec\uc5b4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774 \ucf54\ub4dc\ub97c \uac1c\uc120\ud574\ubcf4\uc790.<\/p>\n<pre class=\"lang: decode:true \">@Test\r\nfun count() {\r\n    val semaphore = Semaphore(1)\r\n    val count = 10000\r\n    var value = 0\r\n    val thread1 = Thread {\r\n        repeat(count) {\r\n            semaphore.acquire()\r\n            value++\r\n            semaphore.release()\r\n        }\r\n    }\r\n    val thread2 = Thread {\r\n        repeat(count) {\r\n            semaphore.acquire()\r\n            value--\r\n            semaphore.release()\r\n        }\r\n    }\r\n    thread1.start()\r\n    thread2.start()\r\n    thread1.join()\r\n    thread2.join()\r\n    println(\"value = $value\")\r\n}<\/pre>\n<p>\uc138\ub9c8\ud3ec\uc5b4\uc758 acquire() \ud638\ucd9c\uc744 \ud1b5\ud574 \ub2e4\ub978 \uc2a4\ub808\ub4dc\uc758 \uc9c4\uc785\uc744 \ub9c9\uace0, \uc791\uc5c5\uc774 \ub05d\ub098\uba74 release()\ub97c \ud638\ucd9c\ud558\uc5ec \ub2e4\ub978 \uc2a4\ub808\ub4dc\uc758 \uc9c4\uc785\uc744 \ud5c8\uc6a9\ud55c\ub2e4.<\/p>\n<p><strong>\uc2e4\ud589\uacb0\uacfc<br \/>\n<\/strong>value = 0<\/p>\n<h2>\uad50\ucc29 \uc0c1\ud0dc(Deadlock)\u00a0<\/h2>\n<p><a href=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-img1.daumcdn-2.jpg\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2020\/12\/www.charlezz.com-img1.daumcdn-2.jpg\" alt=\"\" width=\"297\" height=\"170\" class=\"aligncenter size-full wp-image-44659\" \/><\/a><\/p>\n<p>\uad50\ucc29\uc0c1\ud0dc\ub780 <span>\ub450 \uac1c \uc774\uc0c1\uc758 \uc791\uc5c5\uc774 \uc11c\ub85c \uc0c1\ub300\ubc29\uc758 \uc791\uc5c5\uc774 \ub05d\ub098\uae30 \ub9cc\uc744 \uae30\ub2e4\ub9ac\uace0 \uc788\uae30 \ub54c\ubb38\uc5d0 \uacb0\uacfc\uc801\uc73c\ub85c \uc544\ubb34\uac83\ub3c4 \uc644\ub8cc\ub418\uc9c0 \ubabb\ud558\ub294 \uc0c1\ud0dc\ub97c \uac00\ub9ac\ud0a8\ub2e4.\u00a0<\/span><\/p>\n<p>\ud754\ud788 <strong>\ucca0\ud559\uc790\ub4e4\uc758 \ub9cc\ucc2c<\/strong>\uc744 \uc608\uc81c\ub85c \uad50\ucc29\uc0c1\ud0dc\ub97c \uc124\uba85\ud558\ub294\ub370 \uc774\ub97c \uc870\uae08 \uc218\uc815\ud574\ubcf4\ub3c4\ub85d \ud558\uaca0\ub2e4.<\/p>\n<p>\uc813\uac00\ub77d \ud55c\uc30d\uc774 \uc788\uace0, \uc2dd\ud0c1\uc704\uc5d0 \uc74c\uc2dd \uadf8\ub9ac\uace0 \ub450 \uc0ac\ub78c\uc774 \uc788\ub2e4\uace0 \uac00\uc815\ud558\uc790. \ub450 \uc0ac\ub78c\uc740 \ubc18\ub4dc\uc2dc \uc813\uac00\ub77d \ud55c\uc30d\uc73c\ub85c\ub9cc \uc74c\uc2dd\uc744 \uba39\uc744 \uc218 \uc788\ub2e4. \uc774 \ub54c \ub450 \uc0ac\ub78c\uc5d0\uac8c \uac01\uac01 \uc813\uac00\ub77d 1\uac1c\uc529 \uc8fc\uc5b4\uc9c4\ub2e4. \ub450 \uc0ac\ub78c\uc774 \ubc88\uac08\uc544\uac00\uba74 \uc813\uac00\ub77d\uc744 \uc0ac\uc6a9\ud558\uba74 \uc74c\uc2dd\uc744 \uba39\uc744 \uc218 \uc788\uaca0\uc9c0\ub9cc, \ub450 \uc0ac\ub78c \ubaa8\ub450 \uba3c\uc800 \uc74c\uc2dd\uc744 \uba39\uae30\ub97c \uc6d0\ud558\uae30 \ub54c\ubb38\uc5d0 \uc0c1\ub300\ubc29\uc5d0\uac8c \uc813\uac00\ub77d\uc744 \uc591\ubcf4\ud558\uc9c0 \uc54a\uace0 \uae30\ub2e4\ub9ac\ub294 \uc0c1\ud669\uc774 \uc0dd\uae38 \uc218 \uc788\ub2e4. \uc774\ub97c <strong>\uad50\ucc29\uc0c1\ud0dc<\/strong>\ub77c\uace0 \ud55c\ub2e4.\u00a0<\/p>\n<p>\uad50\ucc29\uc0c1\ud0dc\uac00 \ubc1c\uc0dd\ud558\ub294 \uc608\uc81c\ucf54\ub4dc\ub97c \uc0b4\ud3b4\ubcf4\uc790<\/p>\n<pre class=\"lang: decode:true \">lateinit var job1:Thread\r\nlateinit var job2:Thread\r\n@Test\r\nfun deadlock(){\r\n    job1= Thread{\r\n        Thread.sleep(1000)\r\n        \/\/job2\uac00 \ub05d\ub098\uae38 \uae30\ub2e4\ub9bc\r\n        job2.join()\r\n    }\r\n    job2 = Thread{\r\n        \/\/job1\uc774 \ub05d\ub098\uae38 \uae30\ub2e4\ub9bc\r\n        job1.join()\r\n    }\r\n    job1.start()\r\n    job2.start()\r\n    \/\/job1\uc774 \ub05d\ub098\uae38 \uae30\ub2e4\ub9bc\r\n    job1.join()\r\n    println(\"\ubaa8\ub4e0 \uc791\uc5c5 \uc644\ub8cc\")\r\n}<\/pre>\n<p>job1\uacfc job2\uac00 \uc11c\ub85c\uc758 \uc791\uc5c5\uc774 \ub05d\ub098\uae38 \uae30\ub2e4\ub9ac\uae30 \ub54c\ubb38\uc5d0 \uad50\ucc29\uc0c1\ud0dc\uac00 \ubc1c\uc0dd\ud558\uae30 \ub54c\ubb38\uc5d0, &#8220;\ubaa8\ub4e0 \uc791\uc5c5 \uc644\ub8cc&#8221;\ub77c\ub294 \uba54\uc2dc\uc9c0\uc758 \ucd9c\ub825\uc744 \ud655\uc778\ud560 \uc218 \uc5c6\ub2e4.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ub3d9\uc2dc\uc131 \ud504\ub85c\uadf8\ub798\ubc0d(Concurrent Programming) \ub3d9\uc2dc\uc131 \ud504\ub85c\uadf8\ub798\ubc0d\uc740 \uc5ec\ub7ec\uac1c\uc758 \uacc4\uc0b0\ub4e4\uc744 \uc5f0\uc18d\uc801\uc73c\ub85c \ud558\ub294 \uac83\uc774 \uc544\ub2cc \ubcd1\ud589 \ucc98\ub9ac\ud558\ub294 \ud504\ub85c\uadf8\ub7a8\uc744 \ub9d0\ud55c\ub2e4. \uc774\ub7ec\ud55c \ub3d9\uc2dc\uc131 \ucf54\ub4dc\ub97c \uc81c\ub300\ub85c \uc791\uc131\ud558\ub294 \uac83\uc740 \uc27d\uc9c0 \uc54a\ub2e4. \ud558\uc9c0\ub9cc \ub3d9\uc2dc\uc131 \ucf54\ub4dc \uc791\uc131\uc744 \ud1b5\ud574 \uc131\ub2a5 \ud5a5\uc0c1\uc744 \uae30\ub300\ud560 \uc218 \uc788\ub294 \uacbd\uc6b0\uac00 \ub9ce\uae30 \ub54c\ubb38\uc5d0 \ud604\ub300 \ud504\ub85c\uadf8\ub798\ubc0d\uc5d0\uc11c\ub294 \ud544\uc218\uc801\uc778 \uc694\uc18c\ub2e4. \ub3d9\uc2dc\uc131 \ucf54\ub4dc\ub97c \uc791\uc131\ud560 \ub54c \ubc1c\uc0dd\ud560 \uc218 \uc788\ub294 \uacf5\ud1b5\ub41c \ubb38\uc81c\uc810\ub4e4\uc5d0 \ub300\ud574\uc11c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[3],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44650"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=44650"}],"version-history":[{"count":3,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44650\/revisions"}],"predecessor-version":[{"id":44662,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/44650\/revisions\/44662"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=44650"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=44650"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=44650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}