{"id":299,"date":"2021-01-21T03:03:14","date_gmt":"2021-01-21T03:03:14","guid":{"rendered":"http:\/\/scrutineer.co.kr\/wordpress\/?p=299"},"modified":"2021-01-28T04:37:44","modified_gmt":"2021-01-28T04:37:44","slug":"%eb%aa%a8%eb%8d%98-%ec%9e%90%eb%b0%94-%ec%9d%b8-%ec%95%a1%ec%85%98-7%ec%9e%a51","status":"publish","type":"post","link":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/2021\/01\/21\/%eb%aa%a8%eb%8d%98-%ec%9e%90%eb%b0%94-%ec%9d%b8-%ec%95%a1%ec%85%98-7%ec%9e%a51\/","title":{"rendered":"\ubaa8\ub358 \uc790\ubc14 \uc778 \uc561\uc158 7\uc7a5"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">7.2.1. \uae4c\uc9c0&#8230;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ubcd1\ub82c \uc2a4\ud2b8\ub9bc!!!<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uceec\ub809\uc158\uc5d0\uc11c parallelStream\uc744 \ud638\ucd9c\ud574\uc11c \ubcd1\ub82c \uc2a4\ud2b8\ub9bc\uc744 \uc0dd\uc131\ud560 \uc218 \uc788\uc74c<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1 ~ n\uae4c\uc9c0 \ud569\uc744 \uad6c\ud558\ub294 \uba54\uc18c\ub4dc\ub97c \ub9cc\ub4e0\ub2e4\uace0 \ud558\uc790. \uc77c\ubc18\uc801\uc778 \uc2a4\ud2b8\ub9bc\uc744 \uc0ac\uc6a9\ud55c\ub2e4\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uc791\uc131\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public long sequentialSUm(long n) {\n    return Stream.iterate(1L, i -> i+1)\n                 .limit(n)\n                 .reduce(0L, Long::sum);\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub7fc \uc774\uc81c \ubcd1\ub82c \uc2a4\ud2b8\ub9bc\uc744 \uc774\uc6a9\ud558\uc5ec\ubcf4\uc790. \uac04\ub2e8\ud558\ub2e4&#8230;.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public long sequentialSUm(long n) {\n    return Stream.iterate(1L, i -> i+1)\n                 .limit(n)\n                 .parallel()  \/\/ \ubcd1\ub82c \uc2a4\ud2b8\ub9bc\n                 .reduce(0L, Long::sum);\n}<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"739\" height=\"539\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-2.png\" alt=\"\" class=\"wp-image-306\" srcset=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-2.png 739w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-2-300x219.png 300w\" sizes=\"auto, (max-width: 739px) 100vw, 739px\" \/><figcaption>\uc774\ub807\uac8c \uccad\ud06c\ub85c \ucabc\uac1c\uc11c..<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9bc\uc73c\ub85c\ub294 \ub450\uac1c\uc758 \uccad\ud06c\ub9cc \ucabc\uac1c\uc9c0\ub294 \uac83\uc744 \ud45c\ud604\ud558\uc600\uc9c0\ub9cc, \ub531 \ub450\uac1c\ub85c \ucabc\uac1c\uc9c0\uc9c0\ub294 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubcd1\ub82c \uc2a4\ud2b8\ub9bc\uc758 \ub0b4\ubd80\uc801\uc778 \uad6c\uc870\ub97c \uc0b4\ud3b4\ubcf4\uba74, ForkJoinPool\uc744 \uc0ac\uc6a9\ud55c\ub2e4\uace0 \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud504\ub85c\uc138\uc11c\uc758 \uc218\uc640 \ub3d9\uc77c\ud558\uac8c \uc124\uc815\ub418\ub294 \uc804\uc5ed \uc124\uc815\uc774 \uc788\uace0, \uc774 \uac12\uc744 \ud1b5\ud574 \uc2a4\ub808\ub4dc\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0, \ud558\ub098\uc758 \ubcd1\ub82c \uc2a4\ud2b8\ub9bc\uc5d0 \ud2b9\ubcc4\ud788 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uac12\uc744 \uc9c0\uc815\ud560 \uc218\ub294 \uc5c6\uc74c.<\/p>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc131\ub2a5 \uce21\uc815<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc45\uc5d0\uc120 \ub108\uc904\ub108\uc904 \uc5ec\ub7ec\uac00\uc9c0\uc758 \uc124\uba85\uc744 \ud558\uc9c0\ub9cc \ud575\uc2ec\uc801\uc778 \ub0b4\uc6a9\uc744 \uc62e\uaca8\uc801\uc5b4\ubcf4\uba74<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\uce21\uc815\ud574\ubd10\ub77c<\/li><li>\uce21\uc815\ud574\ubcf4\ub77c\ub2c8\uae4c<\/li><li>\uce21\uc815\ud574\ubd10\uc57c \ud568.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc815\ub3c4\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubca4\uce58\ub9c8\ud06c\ub97c \ub3cc\ub824\ubcf8\ub2e4(\uc9c1\uc811 \ub3cc\ub824\ubcf4\uc9c0\ub294 \uc54a\uace0 \ucc45 \ub0b4\uc6a9\uc744 \uae30\ubc18\uc73c\ub85c \ud55c \uacb0\uacfc\uac12\uc744 \uacf5\uc720\ud55c\ub2e4.)<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public long sequentialSUm(long n) {\n    return Stream.iterate(1L, i -> i+1)\n                 .limit(N)\n                 .reduce(0L, Long::sum);\n}<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"674\" height=\"65\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-3.png\" alt=\"\" class=\"wp-image-307\" srcset=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-3.png 674w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-3-300x29.png 300w\" sizes=\"auto, (max-width: 674px) 100vw, 674px\" \/><figcaption>121\uc810!!!! \ub0ae\uc744\uc218\ub85d \uc88b\ub2e4<\/figcaption><\/figure>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public long iterativeSum(long n) {\n    long result = 0;\n    for (long i = 1L; i &lt;= N ; i++) {\n        result += i;\n    }\n    return result;\n}<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"668\" height=\"74\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-4.png\" alt=\"\" class=\"wp-image-308\" srcset=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-4.png 668w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-4-300x33.png 300w\" sizes=\"auto, (max-width: 668px) 100vw, 668px\" \/><figcaption>3\uc810!?!?!?!?!?!?<\/figcaption><\/figure>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public long sequentialSUm(long n) {\n    return Stream.iterate(1L, i -> i+1)\n                 .limit(n)\n                 .parallel()  \/\/ \ubcd1\ub82c \uc2a4\ud2b8\ub9bc\n                 .reduce(0L, Long::sum);\n}<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"670\" height=\"62\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-5.png\" alt=\"\" class=\"wp-image-309\" srcset=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-5.png 670w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-5-300x28.png 300w\" sizes=\"auto, (max-width: 670px) 100vw, 670px\" \/><figcaption>\ub124&#8230;?600\uc810&#8230;.?;;;<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\ud1b5\uc801 for\ubb38 : 3ms, \ub2e8\uc77c \uc2a4\ud2b8\ub9bc : 121ms, \ubcd1\ub82c \uc2a4\ud2b8\ub9bc : 600ms \uac00 \uc18c\ubaa8\ub41c \uc5b4\uc774\uc5c6\ub294 \uacb0\uacfc\uac00 \ub098\uc654\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc65c \uc774\ub7f0 \uacb0\uacfc\uac00 \ub098\uc654\ub294\uac00? \uc774\uc720\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\uc5f0\uc0b0 \uc790\uccb4\uac00 \ubcd1\ub82c\ub85c \ub098\ub204\uae30\uac00 \uc5b4\ub824\uc6b4 \uc0c1\ud669. reduce\uc5f0\uc0b0\uc774 \uc804\uccb4 \uc22b\uc790 \ub9ac\uc2a4\ud2b8\uac00 \uc900\ube44\ub418\uc9c0 \uc54a\uc558\uc73c\ubbc0\ub85c, \uccad\ud06c\ub85c \ubd84\ud560\ud560 \uc218 \uc5c6\uc74c<ul><li>\uc2e4 \ub85c\uc9c1 \ub3d9\uc791\uc740 \ub2e8\uc77c \uc2a4\ub808\ub4dc\ub85c \uc9c4\ud589\ud558\uba74\uc11c \uc2a4\ub808\ub4dc \uc0dd\uc131, context switch\ube44\uc6a9\ub9cc \uc4f8\ub370\uc5c6\uc774 \ub354 \ubd99\uc74c&#8230;<\/li><\/ul><\/li><li>\ubc15\uc2f1 &amp; \uc5b8\ubc15\uc2f1\uc5d0 \uc18c\ubaa8\ub418\ub294 \ub9ac\uc18c\uc2a4 \uc874\uc7ac<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub798\uc11c \uce21\uc815\uc744 \ud574 \ubd10\uc57c \ud55c\ub2e4\ub294 \uc774\uc57c\uae30\uac00 \ub098\uc624\ub294 \uac83 \uac19\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uadf8\ub798\uc11c \uc5b4\ub5bb\uac8c \ud574\uacb0 \ud560 \uac83\uc778\uac00?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2f9\uc5f0\ud788 \ubc29\ubc95\uc740 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">LongStream.rangeClosed() \ub97c \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ubbf8 \uba54\uc18c\ub4dc\ub97c \ud638\ucd9c\ud558\ub294 \uc2dc\uc810\ubd80\ud130 \uba54\uc18c\ub4dc\uba85 \uadf8\ub300\ub85c &#8216;\ub2eb\ud78c \ubc94\uc704&#8217; \ub85c \ud638\ucd9c\ub418\uae30 \ub54c\ubb38\uc5d0, \uc27d\uac8c \uccad\ud06c\ub85c \ubd84\ub958\ud560 \uc218\uac00 \uc788\ub294 \uad6c\uc870\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public long rangedSum(long n) {\n    return LongStream.rangeClosed(1,N)\n                     .reduce(0L, Long::sum);\n}<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"634\" height=\"65\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-6.png\" alt=\"\" class=\"wp-image-310\" srcset=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-6.png 634w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-6-300x31.png 300w\" sizes=\"auto, (max-width: 634px) 100vw, 634px\" \/><figcaption>5\uc810!!!<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\ud1b5\uc801 for\ubb38\ubcf4\ub2e4\ub294 \ub290\ub9ac\uc9c0\ub9cc \uadf8\ub798\ub3c4 \uc77c\ubc18 \ub2e8\uc77c \uc2a4\ud2b8\ub9bc\ubcf4\ub2e4\ub294 \ud6e8\uc52c \ube60\ub974\ub2e4&#8230;. \uadf8\ub7fc \uc5ec\uae30\ub2e4 parallel()\uc744 \ubd99\uc774\uba74?<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public long rangedSum(long n) {\n    return LongStream.rangeClosed(1,N)\n                     .parallel()\n                     .reduce(0L, Long::sum);\n}<\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"667\" height=\"60\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-7.png\" alt=\"\" class=\"wp-image-311\" srcset=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-7.png 667w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-7-300x27.png 300w\" sizes=\"auto, (max-width: 667px) 100vw, 667px\" \/><figcaption>2.6\uc810. \ub4dc\ub514\uc5b4 \uc804\ud1b5\uc801 for\ubb38\ubcf4\ub2e4 \ube60\ub978.<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uadf8\ub798\uc11c \ud558\uace0\uc2f6\uc740 \ub9d0\uc740<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc544\ubb34\ub9ac \uc2a4\ud2b8\ub9bc\uc744 \uc774\uc6a9\ud55c \ubcd1\ub82c \uc5f0\uc0b0\uc774 \ub808\uac70\uc2dc \uc790\ubc14 \ub300\ube44 \uc26c\uc6cc\uc84c\ub2e4\uace0\ub294 \ud558\uc9c0\ub9cc, \ubcd1\ub82c \uc2a4\ud2b8\ub9bc\uc744 \ubb34\uc870\uac74 \ucf54\ub4dc\uc5d0 \uac16\ub2e4 \ubd99\uc778\ub2e4\uace0 \ub2e4 \ube60\ub974\uac8c \ub3d9\uc791\ud558\ub294\uac74 \uc544\ub2c8\ub2e4. \uc2ec\uc9c0\uc5b4, \ub290\ub9ac\uac8c \ub098\uc624\uae30\ub77c\ub3c4 \ud558\uba74 \ub2e4\ud589\uc774\uc9c0\ub9cc&#8230; mutual exclusive\ud558\uc9c0 \uc54a\uc740 \uc790\uc6d0\uc744 \uc5ec\ub7ec\uac1c\uc758 \uc2a4\ub808\ub4dc\uac00 \uacbd\uc7c1(race condition)\ud558\ub294 \uacbd\uc6b0\uc5d4 \uac12 \uc790\uccb4\uac00 \ub2e4\ub974\uac8c \ub098\uc624\ub294 \uacbd\uc6b0\ub3c4 \uc788\ub2e4. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0c1\ud669\ub9c8\ub2e4, \ucf00\uc774\uc2a4\ub9c8\ub2e4 \uc77c\uc77c\ud788 \uc9c1\uc811 \ud655\uc778\uc744 \ud574\uc57c \ud55c\ub2e4.(\uacb0\uad6d \uc870\uc2ec\ud788 \uc368\ub77c \uc774 \ub9d0.)<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>\uac1c\uc778\uc801\uc778 \uc758\uacac. \uc77c\ubc18\uc801\uc778 \uc6f9\uc11c\ube44\uc2a4 \uac1c\ubc1c \uc601\uc5ed\uc5d0\uc11c \ubcd1\ub82c \uc2a4\ud2b8\ub9bc\uc744 \uc4f8 \ud544\uc694\uac00 \uc788\uc744\uae4c&#8230;? \uac70\uc758 \uc5c6\ub2e4\uace0 \ubcf8\ub2e4&#8230;..<\/p><cite>\uc774\uc720 1.<br>time critical\ud55c \uc2dc\uc2a4\ud15c\uc774\ub77c\uba74 \ubab0\ub77c\ub3c4, \uc77c\ubc18\uc801\uc778 \uc6f9 \uc11c\ube44\uc2a4\uc5d0\uc11c\ub294 \uc5b4\ucc28\ud53c WAS\ub2e8\uc5d0\uc11c (\uc77c\ubc18\uc801\uc778 tomcat\uc744 \ub744\uc6cc\ub3c4) \uc5b4\ucc28\ud53c \uc5ec\ub7ec\uac1c\uc758 \uc2a4\ub808\ub4dc\ub97c \uc0dd\uc131\ud558\uc5ec http request\ub97c \ucc98\ub9ac\ud55c\ub2e4. \uc6f9 \uc11c\ube44\uc2a4\ub97c 1\uba85\ud55c\ud14c\ub9cc \uc11c\ube44\uc2a4 \ud560 \uac83\ub3c4 \uc544\ub2c8\uace0, \uc560\ucd08\uc5d0 \uc2dc\uc2a4\ud15c\uc0c1\uc5d0\uc11c \uba40\ud2f0 \ud504\ub85c\uc138\uc2a4\/\uc2a4\ub808\ub4dc\ub85c request\ub97c \ucc98\ub9ac\ud558\uace0 \uc788\uc9c0 \uc54a\uc740\uac00? \ubc18\ub4dc\uc2dc \ud544\uc694\ud55c \uacbd\uc6b0\uac00 \uc544\ub2c8\ub77c\uba74 \uad73\uc774 \uc560\uc368\uc11c \ubcd1\ub82c\ud654\ub97c \ud560 \uc774\uc720\ub294 \uc0ac\uc2e4 \ubcc4\ub85c \uc5c6\ub2e4.<br>\uc774\uc720 2.<br>\uac00\uc131\ube44\uac00 \ub098\uc624\uc9c0 \uc54a\ub294\ub2e4. <br>\uccab\uca30, \uc0c1\uae30 \uc608\uc81c\ub97c \ubcf4\uba74 \uc54c\uaca0\uc9c0\ub9cc, \ub2e8\uc21c\ud55c sum\ud558\ub294 \uac83\uc5d0\uc11c\ub3c4 &#8216;\uce21\uc815&#8217;\uc744 \ubc18\ub4dc\uc2dc \ud574\uc57c \ud558\ub294 \uac1c\ubc1c\ube44\uc6a9\uc774 \ub9ce\uc774 \ub4e0\ub2e4.(\uc608\uc81c\ub97c \ubcf4\uba74 \uc54c\uaca0\uc9c0\ub9cc \uce21\uc815\uc744 \ud558\uc9c0 \uc54a\uace0\ub294 \ube60\ub974\ub2e4\uace0 \uc7a5\ub2f4\ud560 \uc218 \uc5c6\uc9c0 \uc54a\uc740\uac00) \uac1c\ubc1c\uae30\uac04\uc774 \uc4f8\ub370\uc5c6\uc774 \ub298\uc5b4\ub09c\ub2e4\ub294 \ub73b. \uac8c\ub2e4\uac00 \ubc84\uadf8 \ud130\uc9c0\uba74 \uc7a1\uae30\ub3c4 \ud798\ub4e4\ub2e4.<br>\ub458\uc9f8, \uae30\uaecf \uc798 \uc9dc\ubd24\uc790, \uc131\ub2a5\uc5d0 \uc9c0\ub300\ud55c \uc601\ud5a5\uc744 \ub07c\uce58\ub294 \uacf3\uc740 \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uc774\ub77c\uae30\ubcf4\ub2e4\ub294 DB\ucffc\ub9ac\ub098, server-server API call\ub4f1\uc774\ub2e4. \uc774\uac8c \ud6e0\uc5b4\uc5b4\uc5b4\uc5b4\uc5b4\uc5bc\uc52c \uc218\ud589\uc2dc\uac04\uc774 \uc624\ub798 \uac78\ub9b0\ub2e4. \uc560\uafce\uc740 \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \ucd5c\uc801\ud654\ud55c\ub2f5\uc2dc\uace0 \uc0bd\uc9c8\ud558\ub294\uac83\ubcf4\ub2e4 \ucc28\ub77c\ub9ac \uc774\ucabd\uc744 \uc0b4\ud3b4\ubcf4\uace0 \uac1c\uc120\ud558\ub294\uac8c \ud6e8\uc52c \uac00\uc131\ube44\uac00 \uc798\ub098\uc634.<br>\uc774\uc720 3.<br>\ubca4\uce58\ub9c8\ud06c \uacb0\uacfc\ub97c \ubcf4\uba74 \uc54c\uaca0\uc9c0\ub9cc, \uc804\ud1b5\uc801 for\ubb38\ubcf4\ub2e4 stream\uc774 40\ubc30\ub098 \ub290\ub9b0 \uacbd\uc6b0\uac00 \uc788\uc9c0 \uc54a\uc740\uac00? \uadf8\ub798\ub3c4 \uc6b0\ub9b0 for\ubb38\ub530\uc704\ub294 \uc4f0\uc9c0 \uc54a\uace0 40\ubc30\ub098 \ub290\ub9b0 stream\uc744 \uc0ac\uc6a9\ud55c\ub2e4. (\ubb3c\ub860 \uc544\ub2cc \uacbd\uc6b0or\uc0c1\ud669\ub3c4 \uc788\uc9c0\ub9cc)<br>\ucf54\ub4dc\uc758 \uac00\ub3c5\uc131\uc774\ub098 \uc9c1\uad00\uc131\uc774 \uc131\ub2a5\ubcf4\ub2e4 \ud6e8\uc52c \uac00\uce58\uac00 \ub192\uac8c \ud3c9\uac00\ub418\uae30 \ub584\ubb38. \uc2e4\uc804(?)\uc5d0\uc11c \uc774\ub7ec\ud55c \ud2b8\ub80c\ub4dc\ub85c \uac1c\ubc1c\uba54\ud0c0\uac00 \ubcc0\ud654\ud558\uace0 \uc788\uace0, \uadf8\uac74 \uace7, (\uc11c\ube44\uc2a4\uac00 \ubd88\uac00\ud560 \uc815\ub3c4\uc758)\uc131\ub2a5\uc758 \uc555\ub3c4\uc801\uc778 \ucc28\uc774\uac00 \uc788\uc9c0 \uc54a\ub294 \uc774\uc0c1 \uac00\ub3c5\uc131, \uc720\uc9c0\ubcf4\uc218\uc131\uc744 \uc7a1\ub294\uac8c \uc7a5\uae30\uc801\uc73c\ub85c \ud6e8\uc52c \uc774\uc775\uc774\ub77c\ub294 \uac83\uc744 \uc6b0\ub9ac\uac00 \uacbd\ud5d8\uc801\uc73c\ub85c \uc54c\uace0 \uc788\uae30 \ub54c\ubb38.<br><br>\uadf8\ub7fc\uc5d0\ub3c4 \ubd88\uad6c\ud558\uace0<br>\uc54c\uace0\uc11c \uc4f0\uc9c0 &#8216;\uc54a\ub294 \uac83&#8217;\uacfc \ubab0\ub77c\uc11c \uc4f0\uc9c0 &#8216;\ubabb\ud558\ub294&#8217; \uacbd\uc6b0\ub294 \uc5c4\uc5f0\ud788 \ub2e4\ub974\ub2c8. \uacf5\ubd80\ud560\ub550 \ub2e5\uce58\uace0 \uc5f4\uc2ec\ud788 \ubc30\uc6b0\uc790&#8230;\u314b<\/cite><\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ubcd1\ub82c \uc2a4\ud2b8\ub9bc\uc744 \ud6a8\uacfc\uc801\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uac00\uc774\ub4dc<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>\uce21\uc815.\uce21\uc815!\uce21\uc815!!!!! \uc790\ubc14\uc5d0 \ub300\ud574 \ube60\uc0ad\ud558\uac8c \uc54c\uace0 \uc788\uc5b4 \uc9e0 \ucf54\ub4dc\uc758 \uba54\ucee4\ub2c8\uc998\uc744 \ud55c\uc904 \ud55c\uc904 &#8216;\uba85\ud655\ud788 \uc54c\uace0 \uc788\ub294&#8217; \uc815\ub3c4\ub77c\uba74\uc57c \uce21\uc815\uc744 \ud328\uc2a4\ud574\ub3c4 \ub418\uaca0\uc9c0\ub9cc, \uadf8\uc815\ub3c4\uc758 \uc644\ubcbd\ud55c \ud655\uc2e0\uc774 \uc11c\uc9c0 \uc54a\uc73c\uba74 \uc9c1\uc811 \uce21\uc815\ud574\ubd10\ub77c.<\/li><li>primitive data type \ud2b9\ud654 \uc2a4\ud2b8\ub9bc\uc744 \uc801\uadf9\uc801\uc73c\ub85c \uc0ac\uc6a9\ud558\ub294\uac83\uc774 \uc88b\ub2e4. \ubc15\uc2f1\uc744 \uc8fc\uc758\ud558\ub77c. \ubc15\uc2f1 &amp; \uc5b8\ubc15\uc2f1\uc5d0 \ub4dc\ub294 \ucf54\uc2a4\ud2b8\ub294 \uc0dd\uac01\ubcf4\ub2e4 \ud06c\ub2e4.<\/li><li>limit, findFirst\ucc98\ub7fc \uc694\uc18c\uc758 \uc21c\uc11c\uc5d0 \uc758\uc874\ud558\ub294 \uc5f0\uc0b0\uc740 \uc624\ud788\ub824 \uc131\ub2a5\uc774 \ub5a8\uc5b4\uc9c0\ub294 \uacbd\uc6b0\uac00 \uc788\ub2e4. \uc8fc\uc758\ud558\ub77c.<\/li><li>\uc2a4\ud2b8\ub9bc\uc5d0\uc11c \uc218\ud589\ud558\ub294 \ud30c\uc774\ud504\ub77c\uc778 \uc5f0\uc0b0 \ube44\uc6a9\uc744 \uace0\ub824\ud558\ub77c.<\/li><li>(\ub2f9\uc5f0\ud788)\uc18c\ub7c9\uc758 \ub370\uc774\ud130\ub294 \ubcd1\ub82c \uc2a4\ud2b8\ub9bc\uc774 \ubcc4 \ub3c4\uc6c0\uc774 \ub418\uc9c0 \uc54a\ub294\ub2e4. \ubb3c\ub860 \uc18c\ub7c9?\ub300\ub7c9?\uc5d0 \ub300\ud55c \uadf8 \uae30\uc900\uc740 \uac1c\ubc1c\uc790\uac00 \uc2a4\uc2a4\ub85c \uc0dd\uac01\ud574\uc57c \ud568.<\/li><li>\uc790\ub8cc\uad6c\uc870\uc5d0 \ub530\ub77c\uc11c \uc801\ud569\uc131\uc744 \ud310\ub2e8\ud574\ub77c. ArrayList\ub294 \ubc88\uc9c0\uc218\ub9cc \uc54c\uace0 \uc788\uc73c\uba74 \uc811\uadfc \uac00\ub2a5\ud55c Random Access\uc774\uc9c0\ub9cc, LinkedList\ub294 \uc21c\ucc28 \uc811\uadfc\ub9cc \uac00\ub2a5\ud55c Sequential Access \ubc29\uc2dd\uc774\ub2e4.<\/li><li>\uc911\uac04 \uc5f0\uc0b0\uc774 \uc2a4\ud2b8\ub9bc\uc758 \ud2b9\uc131\uc744 \uc5b4\ub5bb\uac8c \ubc14\uafb8\ub294\uc9c0\uc5d0 \ub530\ub77c \uc131\ub2a5\ucc28\uc774\uac00 \uc874\uc7ac\ud55c\ub2e4. \uc2a4\ud2b8\ub9bc \ud30c\uc774\ud504\ub77c\uc778\uc5d0 filter\uac00 \uc911\uac04\uc5d0 \ub4e4\uc5b4\uac00\uba74, filter \uacb0\uacfc\ub97c \uc608\uce21\ud560 \uc218 \uc5c6\uc73c\ubbc0\ub85c \ud6a8\uacfc\uc801\uc73c\ub85c \ubcd1\ub82c\ucc98\ub9ac\uac00 \uac00\ub2a5\ud55c\uc9c0 \uc54c \uc218 \uc5c6\uac8c \ub418\ub294 \uc0c1\ud669\uc774 \ubc1c\uc0dd\ud55c\ub2e4. \uc8fc\uc758\ud558\ub77c.<\/li><li>\ubcd1\ub82c\ub85c \ucc98\ub9ac\ud55c \uac01 \uc2a4\ub808\ub4dc\uc758 \ucd5c\uc885 \uacb0\uacfc\ubb3c\ub4e4\uc744 \ucde8\ud569\ud558\ub294 \uacfc\uc815\uc758 \ube44\uc6a9\ub3c4 \uc0dd\uac01\ud574\uc57c \ud55c\ub2e4.(Collector.combiner\uba54\uc18c\ub4dc) \uba38\uc9c0\ud558\ub294 \uacfc\uc815\uc774 \ube44\uc2f8\uba74 \uad73\uc774 \ubcd1\ub82c\ucc98\ub9ac \ud560 \ud544\uc694\uac00 \uc5c6\ub294 \uacbd\uc6b0\uac00 \uc788\uc744 \uc218\ub3c4 \uc788\ub2e4.<\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud3ec\ud06c\/\uc870\uc778 \ud504\ub808\uc784\uc6cc\ud06c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">&#8216;\uc774\ub7f0\uac8c \uc788\ub2e4&#8217; \uc815\ub3c4\ub85c\ub9cc \ubcf4\uace0 \ub118\uc5b4\uac00\uc790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c \ucf54\ub4dc\ub294 \ud3ec\ud06c\/\uc870\uc778 \ud504\ub808\uc784\uc6cc\ud06c\ub97c \uc0ac\uc6a9\ud558\ub294 \uc77c\uc885\uc758 pseudo code\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ForkJoinCalculator extends java.util.concurrent.RecursiveTask&lt;Long> {\n  \/\/\ubcc0\uc218\uc120\uc5b8 \uc0dd\ub7b5.\n\n  public ForkJoinSumCalculator(long[] numbers) {\n    this(numbers, 0, numbers.length);\n  }\n  \/\/ \uc0dd\uc131\uc790 \uc0dd\ub7b5\n\n  private long computeSequentially() {\n    \/\/\ub85c\uc9c1 \uc0dd\ub7b5(\uac4d sum\ud558\ub294\uac70\uc9c0 \ubb50...)\n  }\n\n  @Override\n  protected Long compute() {\n    if (length &lt;= THRESHOLD) {\n      return computeSequentially();\n    }\n\n    ForkJoinSumCalculator leftTask = new ForkJoinSumCalculator(numbers, start, start+len\/2);\n    leftTask.fork(); \/\/\uc67c\ucabd task \ube44\ub3d9\uae30\ub85c \uc2e4\ud589\n\n    ForkJoinSumCalculator rightTask = new ForkJoinSumCalculator(numbers, start+len\/2, end);\n    Long rightResult = rightTask.compute(); \/\/\uc624\ub978\ucabd task\ub294 compute() \uc7ac\uadc0\ud638\ucd9c\n\n    Long leftResult = leftTask.join();  \/\/\uc7ac\uadc0\uc801\uc73c\ub85c \uc218\ud589\ud574\uc654\uc5c8\ub358 \uacb0\uacfc\uac12\uc744 \uc77d\uac70\ub098, \uc544\uc9c1 \uc644\ub8cc\uac00 \uc548\ub410\uc73c\uba74 \uc774 \ub77c\uc778\uc5d0\uc11c block.\n\n    return leftResult + rightResult;\n\n  }\n}\n\n\npublic static void main(String[] args) {\n  ForkJoinTask&lt;Long> task = new ForkJoinCalculator(numbers);\n  return new ForkJoinPool().invoke(task);\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud081\ud081&#8230; divide &amp; conquer \ub0c4\uc0c8\uac00 \ub09c\ub2e4. &#8216;\ub354\ud55c\ub2e4&#8217; \ub97c &#8216;\uc815\ub82c\ud55c\ub2e4&#8217; \ub85c \ubc14\uafb8\uba74 \ub531 \uba38\uc9c0\uc18c\ud2b8\uc784&#8230;..<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc28\uc774\uac00 \uc788\ub2e4\uba74 conquer \ud558\ub294 \ud574\uacb0\uacfc\uc815\uc774 RecursiveTask\ub97c \uad6c\ud604\ud55c \uacb0\uacfc\ub97c ForkJoinPool \uc744 \ud1b5\ud574 invoke\uc2dc\ucf30\ub2e4\ub294 \uac83\uc774\ub2e4. \uadf8\ub798\uc11c (\ub0b4\uac00 \ubcd1\ub82c\ucc98\ub9ac \ubc29\uc2dd\uc774 \uc544\ub2cc \ub2e8\uc21c recursion\uc73c\ub85c ForkJoinCalculator \ucf54\ub4dc\ub97c \uc791\uc131\ud588\uc9c0\ub9cc)\ubcd1\ub82c\ub85c \ub85c\uc9c1\uc774 \uc218\ud589\ub420 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc815\ubcf4 : ForkJoinPool \uc740 Runtime.availableProcessors \uc758 \ub9ac\ud134 \uac12\uc73c\ub85c \uc0ac\uc6a9\ud560 \uc2a4\ub808\ub4dc \uc218\ub97c \uacb0\uc815\ud55c\ub2e4\uace0 \ud55c\ub2e4. \uac00\uc0c1\ucf54\uc5b4(\ud558\uc774\ud37c\uc2a4\ub808\ub529) \ud3ec\ud568\uc784.<\/p>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\ud3ec\ud06c\/\uc870\uc778 \ud504\ub808\uc784\uc6cc\ud06c \uc0ac\uc6a9 \uc2dc \uc8fc\uc758\uc0ac\ud56d(\uc81c\ub300\ub85c \uc0ac\uc6a9\ud558\ub294 \ubc95)<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>join\uc744 \uc8fc\uc758\ud558\ub77c<ul><li>\uc0ac\uc2e4 \uc774\uac74 \uad73\uc774 \ud3ec\ud06c\/\uc870\uc778 \ud504\ub808\uc784\uc6cc\ud06c\ubfd0\ub9cc \uc544\ub2c8\ub77c, 7 \uc774\ud558 \uc790\ubc14\uc5d0\uc11c \uc9c0\uc6d0\ud574\uc92c\ub358 \uba40\ud2f0\uc2a4\ub808\ub4dc \uc778\ud130\ud398\uc774\uc2a4(Thread,Runnable)\uc5d0\uc11c\ub3c4 \ud574\ub2f9\ub418\ub294 \ub9d0\uc774\ub2e4. join() \uad6c\ubb38 \uc790\uccb4\uac00, \uc5f0\uc0b0\uc5d0 \uc758\uc874\uc131\uc774 \uc788\ub294 \ub2e4\ub978 \uc2a4\ub808\ub4dc\uc758 \uacb0\uacfc\ubb3c\uc744 \uae30\ub2e4\ub9b0\ub2e4\ub294 \uc758\ubbf8\uc778\uc9c0\ub77c.. \ub2e4\ub978 \uc2a4\ub808\ub4dc\uc5d0\uc11c \ub0b4\uac00 \uc5f0\uc0b0\ud560 \uc218 \uc788\ub294 \uc0c1\ud0dc\uac00 \ub420 \ub54c\uae4c\uc9c0 blocking\uc0c1\ud0dc\ub85c \ub300\uae30\ud558\uac8c \ub41c\ub2e4.<\/li><\/ul><\/li><li>RecursiveTask \ub0b4\uc5d0\uc11c\ub294 ForkJoinPool.invoke \uba54\uc18c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc9c0 \ub9d0\uc544\uc57c \ud55c\ub2e4\uace0 \ud55c\ub2e4. \ub300\uc2e0 compute\ub098 fork\uba54\uc18c\ub4dc\ub97c \uc9c1\uc811 \ud638\ucd9c\ud560 \uc218 \uc788\ub2e4.<ul><li>\uc774\uc720\ub294 \ub098\ub3c4 \uc798 \ubaa8\ub974\uaca0\ub2e4.<\/li><\/ul><\/li><li>\uc11c\ube0c\ud0dc\uc2a4\ud06c\uc5d0 fork \uba54\uc18c\ub4dc\ub97c \ud638\ucd9c\ud574\uc11c ForkJoinPool\uc758 \uc77c\uc815\uc744 \uc870\uc808\ud560 \uc218 \uc788\ub2e4.<\/li><li>\ub514\ubc84\uae45\uc774 \uc5b4\ub835\ub2e4. stackTrace\uac00 \ubcc4 \ub3c4\uc6c0\uc774 \ub418\uc9c0 \uc54a\uae30 \ub54c\ubb38<\/li><li>\ubb3b\uc9c0\ub9c8 \ubcd1\ub82c \uc2a4\ud2b8\ub9bc\uc758 \uacbd\uc6b0\uc640 \ub611\uac19\uc774 \ubb3b\uc9c0\ub9c8 \ud3ec\ud06c\/\uc870\uc778 \ud504\ub808\uc784\uc6cc\ud06c\uac00 &#8216;\ubb34\uc870\uac74 \ube60\ub974\ub2e4&#8217; \ub294 \ubcf4\uc7a5\uc774 \uc5c6\ub2e4.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:30px\">\ud6a8\uc728\uc801\uc778 \uc791\uc5c5\ubd84\ud560<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc55e\uc758 \uc608\uc81c\uc5d0\uc11c\ub294 \ub367\uc148\uc744 \uc218\ud589\ud560 \uc22b\uc790\uac00 10000\uac1c \uc774\ud558\uba74 \ub354 \uc774\uc0c1 task\ub97c \ubd84\ud560\ud558\uc9c0 \uc54a\ub294 \ucf54\ub4dc\uc774\ub2e4. \uadf8\ub7fc \ucd1d \ubc30\uc5f4 \ud06c\uae30\uac00 \ucc9c\ub9cc\uac1c\ub77c\uba74, \uc608\uc81c\ub294 task\ub97c \ucc9c\uac1c\uc529\uc774\ub098 \ubd84\ud560\ud574\uc11c \ub85c\uc9c1\uc744 \uc218\ud589\ud560 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadfc\ub370 \uc694\uc998 \ud558\ub4dc\uc6e8\uc5b4 \uc798 \ubf51\ud600\ub098\uc654\uc790 8\ucf54\uc5b4\ub97c \ub118\ub294\uac74 \uc798 \uc5c6\uace0, \ucf54\uc5b4\uac00 1000\uac1c\uc529\uc774\ub098 \ub418\ub294 \uacbd\uc6b0\ub294 \ub354\ub354\uc6b1 \uc5c6\ub2e4&#8230;.. 4\ucf54\uc5b4 \uae30\uc900\uc73c\ub85c \uad73\uc774 task\ub97c 1000\uac1c\uc529\uc774\ub098 \ub098\ub20c \uc774\uc720\uac00 \uc788\uc744\uae4c&#8230;?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\ub860\ubd80\ud130 \ub9d0\ud558\uba74 \uc788\ub2e4. \uc774\ub860\uc801\uc73c\ub85c\uc57c \ucc9c\ub9cc\uac1c\uc758 \ubc30\uc5f4\uc744 4\uac1c\ub85c \ub098\ub220 250\ub9ccx4\uac1c\uc758 task\ub85c \ucabc\uac1c\uc11c \ub85c\uc9c1\uc744 \uc218\ud589\ud558\uba74 \ub3d9\uc2dc\uc5d0 \uc885\ub8cc\ub418\uaca0\uc9c0\ub9cc, \ud604\uc2e4\uc740 \uadf8\ub807\uc9c0 \uc54a\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"625\" height=\"554\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-9.png\" alt=\"\" class=\"wp-image-335\" srcset=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-9.png 625w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-9-300x266.png 300w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><figcaption>\ubaa8\ub4e0 \uc2a4\ub808\ub4dc\ub294 \ub3d9\uc2dc\uc5d0 \uc2dc\uc791\ud574\ub3c4 \ub3d9\uc2dc\uc5d0 \uc885\ub8cc\ub418\uc9c0 \uc54a\ub294\ub2e4.<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5b4\ucc28\ud53c \ub85c\uc9c1\uc218\ud589\uc740 &#8216;\ubaa8\ub4e0 \uc2a4\ub808\ub4dc\uc758 \uc791\uc5c5\uc774 \ub05d\ub098\uc57c&#8217; \ub85c\uc9c1\uc218\ud589\uc774 \uc644\ub8cc\ub418\uc5c8\ub2e4\uace0 (\ub2f9\uc5f0\ud788)\uac04\uc8fc\ub41c\ub2e4. \ud5cc\ub370, \uc791\uc5c5\uc744 \ub2e8\uc21c\ud788 \ucf54\uc5b4\uc218\uc778 4\uac1c\ub85c \ub098\ub220\ub193\uace0 \ub85c\uc9c1\uc744 \uc218\ud589\ud558\ub2e4\uac00, \ud2b9\uc815 \uc2a4\ub808\ub4dc\uac00 I\/O\ubcd1\ubaa9\uc774 \uac78\ub838\uac70\ub098, \uc678\ubd80\uc694\uc778\uc73c\ub85c \uc778\ud574 \uc608\uc0c1\uce58 \ubabb\ud558\uac8c \uc791\uc5c5\uc2dc\uac04\uc774 \uae38\uc5b4\uc84c\ub2e4\uba74&#8230;?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc544\ubb34\ud2bc \uadf8\ub798\uc11c, \uc791\uc5c5 \uc790\uccb4\ub294 \uc798\uac8c \ucabc\uac1c\ub294\uac8c \uc544\ubb34\ub798\ub3c4 \uc88b\ub2e4. \uadf8\ub798\uc57c \ub180\uace0 \uc788\ub294 \uc2a4\ub808\ub4dc\uc5d0 &#8216;\ud2b9\uc815 \uae30\ubc95&#8217;\uc744 \uc774\uc6a9\ud574\uc11c <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">??? : \ub108 \uac00\uc11c \uc800\uae30 \ud5e4\uba54\uace0 \uc788\ub294 \uc800\ub188 \ub3c4\uc640\uc918<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub97c \uc2dc\uc804\ud560 \uc218 \uac00 \uc788\ub2e4. \uc774\uc81c \uadf8 &#8216;\ud2b9\uc815 \uae30\ubc95&#8217;\uc774 \ubb54\uc9c0 \ud55c\ubc88 \uc0b4\ud3b4\ubcf4\ub3c4\ub85d \ud558\uc790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" style=\"font-size:30px\">\uc791\uc5c5 \ud6d4\uce58\uae30<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ud3ec\ud06c\/\uc870\uc778 \ud504\ub808\uc784\uc6cc\ud06c\ub294 \uc791\uc5c5 \ud6d4\uce58\uae30(work stealing) \uae30\ubc95\uc744 \uc774\uc6a9\ud574\uc11c \uc774 \ubb38\uc81c\ub97c \ud574\uacb0\ud55c\ub2e4. \ucabc\uac20 \uc791\uc5c5\uc744 \uac01 \uc2a4\ub808\ub4dc\uac00 \ub85c\uc9c1\uc744 \uc218\ud589\ud558\ub294\ub370, \ub0b4 \uc2a4\ub808\ub4dc\uac00 \ub0b4\uac00 \uac16\uace0 \uc788\ub294 \uc791\uc5c5\uc744 \ub2e4 \ub05d\ub0b4\uba74, \ub2e4\ub978 \uc2a4\ub808\ub4dc\uc758 \uc791\uc5c5queue\uc5d0\uc11c \ub300\uae30\ud558\uace0 \uc788\ub294 \uc791\uc5c5\uc744 \ubec7\uc5b4\uc628\ub2e4\ub294 \uc774 \ub9d0\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc791\uc5c5 \ud6d4\uce58\uae30 \uae30\ubc95\uc744 \uc0ac\uc6a9\ud558\uba74, \ub2e4\ub978 \uc2a4\ub808\ub4dc\uac00 \ubbf8\ucc98 \ucc98\ub9ac\ud558\uc9c0 \ubabb\ud55c \uc77c\uae4c\uc9c0 \ub0b4\uac00 \uc26c\uc9c0 \uc54a\uace0 \ucc98\ub9ac\ud558\uac8c \ub418\uc5b4, \uc660\ub9cc\ud558\uba74 \uac70\uc758 \ub3d9\uc2dc\uc5d0 \ubaa8\ub4e0 \uc791\uc5c5\uc774 \uc644\ub8cc\ub420 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc704\uc758 \uc608\uc81c\ub294 \ub2e8\uc21c\ud788 \ubd84\ud560 \ub85c\uc9c1 \uc5c6\uc774 \uc22b\uc790\ub97c 10000\uac1c \ub2e8\uc704\ub85c \ucabc\uac1c\uc5c8\uc9c0\ub9cc, \uc774\uc81c \uc55e\uc73c\ub85c \uc0b4\ud3b4\ubcfc \uac83\uc740 \uc790\ub3d9\uc73c\ub85c \uc2a4\ud2b8\ub9bc\uc744 \uc54c\uc544\uc11c \uc798 \ubd84\ud560\ud558\ub294 \uae30\ubc95\uc778  Spliterator \uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcfc \uac83\uc774\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Spliterator!!!!<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Split Iterator\uc774\ub77c\ub294 \ub73b\uc774\ub2e4. \ub9d0 \uadf8\ub300\ub85c &#8216;\ucabc\uac1c\uc11c \ubc18\ubcf5\uc2dc\ud0b4&#8217; \uc774\ub77c\uace0 \uc0dd\uac01\ud558\uba74 \uc774\ud574\uac00 \uc27d\uaca0\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Spliterator \uc778\ud130\ud398\uc774\uc2a4\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \uba54\uc18c\ub4dc\ub4e4\uc774 \uc815\uc758\ub418\uc5b4 \uc788\ub2e4. \ud558\ub098\ud558\ub098\uc529 \ubcf4\uba74\uc11c \uc54c\uc544\uac00 \ubcf4\uc790<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public interface Spliterator&lt;T> {\n  boolean tryAdvance(Consumer&lt;? super T> action);\n  Spliterator&lt;T> trySplit();\n  long estimateSize();\n  int characteristics();\n}<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>tryAdvance<ul><li>Spliterator\uc758 \uc694\uc18c\ub97c \ud558\ub098\uc529 consume\ud558\uba74\uc11c \ud0d0\uc0c9\ud574\uc57c \ud560 \uc694\uc18c\uac00 \ub0a8\uc544\uc788\uc73c\uba74 return true (iterate)<\/li><\/ul><\/li><li>trySplit<ul><li>Spliterator\ub97c \ucabc\uac1c\uc11c \ub610\ub2e4\ub978 Spliterator\ub97c \uc0dd\uc131\ud558\ub294 \uba54\uc18c\ub4dc (\uc544\ub798\uadf8\ub9bc \ucc38\uc870)<\/li><\/ul><\/li><li>estimateSize<ul><li>\ud0d0\uc0c9\ud574\uc57c \ud560 \uc694\uc18c \uc218\ub97c \ub9ac\ud134<\/li><li>\uc774 \uac12\uc744 \ubcf4\uace0 \uacf5\ud3c9\ud558\uac8c Spliterator\ub97c \ubd84\ud560\ud560 \uc218 \uc788\ub294\uc9c0 \ud310\ub2e8\ud560 \uc218 \uc788\uc74c.<\/li><\/ul><\/li><li>characteristics<ul><li>Spliterator \uc790\uccb4\uc758 \ud2b9\uc131 \uc9d1\ud569\uc744 \ud3ec\ud568\ud558\ub294 \uac12\uc744 \ub9ac\ud134<\/li><\/ul><\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"623\" height=\"286\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-11.png\" alt=\"\" class=\"wp-image-343\" srcset=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-11.png 623w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-11-300x138.png 300w\" sizes=\"auto, (max-width: 623px) 100vw, 623px\" \/><figcaption>characteristics<\/figcaption><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Spliterator\uac00 \uac01 \uc791\uc5c5\ub4e4\uc744 \ucabc\uac1c\ub294 \uacfc\uc815\uc744 \ub3c4\uc2dd\ud654 \ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ud45c\ud604 \ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"714\" height=\"492\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-10.png\" alt=\"\" class=\"wp-image-342\" srcset=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-10.png 714w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-10-300x207.png 300w\" sizes=\"auto, (max-width: 714px) 100vw, 714px\" \/><figcaption><br>null \ub098\uc62c\ub54c\uae4c\uc9c0 \ucabc\uac1c\ucabc\uac1c<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\uadf8\ub7fc \uc774\uc81c Spliterator\ub97c \uad6c\ud604\ud574 \ubcfc\uae4c?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">String\uc758 \ub2e8\uc5b4(\uc5b4\uc808) \uc218\ub97c \uad6c\ud558\ub294 \ub2e8\uc21c\ud55c \uba54\uc18c\ub4dc\ub97c \ud1b5\ud574 \uc608\uc81c\ub97c \uc791\uc131\ud574 \ubcf4\uc790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc6b0\uc120 \uad6c\ud604\uc5d0 \uc55e\uc11c, \uc804\ud1b5\uc801\uc778 for\ubb38\uc744 \ud1b5\ud574\uc11c\ub294 \uc5b4\ub5bb\uac8c \uad6c\ud604\ud558\ub294\uc9c0 \ud55c\ubc88 \uc0b4\ud3b4\ubcf8\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public int countWordsIteratively(String s) {\n  int counter = 0;\n  boolean lastSpace = true;\n  for (char c : s.toCharArray()) {\n    if (Character.isWhiteSpace(c)) {\n      lastSpace = true;\n    }\n    else {\n      if (lastSpace) counter++;\n      lastSpace = false;\n    }\n  }\n\n  return counter;\n}\n\n\npublic static void main (String args[]) {\n  final String SENTENCE = \"Nel mezzo del cammin di nostra vita mi ritrovai in una selva oscura\" +\n                          \"ch la dritta via era smarrita\";\n  sysout(countWordsIteratively(SENTENCS));         \/\/ 19 words\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ubb50&#8230;\uac04\ub2e8\ud558\ub2e4&#8230;. \uadf8\ub0e5 \uc21c\ucc28\uc801\uc73c\ub85c 1\uae00\uc790 1\uae00\uc790\uc529 \uc77d\uc5b4\uac00\uba74\uc11c couter\ub97c \ucd94\uac00\ud574 \uc900\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\uac78 \uc870\uae08 \uba38\ub9ac\ub97c \uc368\uc11c, \uc7ac\uadc0\uc801\uc73c\ub85c \ud638\ucd9c\ud560 \uc218 \uc788\ub294 \ud074\ub798\uc2a4\ub97c \uad6c\ud604\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uad6c\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uad6c\ud604\uc5d0 \uc55e\uc5b4 \uc624\ud1a0\ub9c8\ud0c0\ub85c \ud45c\ud604\ud574\ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \ub2e4\uc774\uc5b4\uadf8\ub7a8\uc774 \ub098\uc62c \uac83\uc774\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"530\" height=\"198\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-12.png\" alt=\"\" class=\"wp-image-349\" srcset=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-12.png 530w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-12-300x112.png 300w\" sizes=\"auto, (max-width: 530px) 100vw, 530px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9b0 \uc624\ud1a0\ub9c8\ud0c0\ub97c \ubc14\ud0d5\uc73c\ub85c \ud074\ub798\uc2a4\ub97c \uad6c\ud604\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\nclass WordCounter {\n  private final int counter;\n  private final boolean lastSpace;\n  \/\/ \uc0dd\uc131\uc790 \ud3b8\uc758\uc0c1 \uc0dd\ub7b5\ud568\n\n  public WordCounter accumulate(Character c) {\n    if (Character.isWhiteSpace(c)) {\n      return lastSpace ? this : new WordCounter(counter, true);\n    }\n    else {\n      return lastSpace ? new WordCounter(counter+1, false) : this;\n    }\n  }\n\n  public WordCounter combine(WordCounter wordCounter) {\n    return new WordCounter(counter + wordCounter.counter, wordCounter.lastSpace);\n  }\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 \uad6c\ud604\ud55c WordCounter\ub97c \uae30\ubc18\uc73c\ub85c, reduce stream\uc744 \uc774\uc6a9\ud558\uc5ec \ub2e4\uc74c\uacfc \uac19\uc774 \ub2e8\uc5b4 \uc218\ub97c \uc138\ub294 \uba54\uc18c\ub4dc\ub97c \uad6c\ud604\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uc791\uc131\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">private int countWords(Stream&lt;Character> stream) {\n  WordCounter wordcounter = stream.reduce(new WordCounter(0,true), \/\/\ucd08\uae30\uac12\n                                          WordCounter::accumulate, \/\/\uc5f0\uc0b0\n                                          WordCounter::combine);   \/\/\ud569\uce60\ub54c\n}\n\nStream&lt;Character> stream = IntStream.range(0, SENTENCE.length())\n                                    .mapToObj(SENTENCE::charAt);\n\nsysout(countWords(stream)); \/\/ \ub2e8\uc77c\uc2a4\ub808\ub4dc\nsysout(countWords(stream.parallel())); \/\/\ubcd1\ub82c\uc2a4\ub808\ub4dc<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uc77c \uc2a4\ud2b8\ub9bc\uc744 \uc774\uc6a9\ud55c \uacb0\uacfc\uac12\uc740 \uc798 \ub098\uc624\uc9c0\ub9cc, \ubcd1\ub82c \uc2a4\ud2b8\ub9bc\uc744 \uc774\uc6a9\ud55c \uacb0\uacfc\uac12\uc740 \uc758\ub3c4\ud55c\ub300\ub85c \ub098\uc624\uc9c0 \uc54a\uc744 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\ubb38\uc790\uc5f4\uc744 \ucabc\uac1c\ub294 \ub2e8\uc704\ub97c \uc5b4\uc808\ubcc4\ub85c \uc798 \ucabc\uac1c\uc57c \ud558\ub294\ub370, \uadf8\ub807\uc9c0 \uc54a\uc558\uc74c.<ul><li>\ud558\ub098\uc758 \uc5b4\uc808\uc744 \ucabc\uac1c\uc11c \uacc4\uc0b0\ud574\ubc84\ub9bc<\/li><\/ul><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c, WordCounter + stream.reduce() \ub97c \uc774\uc6a9\ud55c \ucf54\ub4dc\ub85c\ub294 \ubcd1\ub82c\ucc98\ub9ac\ub97c \ud560 \uc218\uac00 \uc5c6\ub294 \ucf54\ub4dc\ub77c\uace0 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Spliterator\ub97c \uad6c\ud604\ud574\ubcf8\ub2e4.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ubb3c\ub860, \uac00\ub2a5\ud55c \uacbd\uc6b0\ub3c4 \uc788\uaca0\uc9c0\ub9cc&#8230; \uc77c\ubc18\uc801\uc73c\ub85c stream.reduce\uac00 \uac00\ub2a5\ud55c \ub2e8\uc21c\ud55c \uc7ac\uadc0\ud615 \ud074\ub798\uc2a4\ub97c \uad6c\ud604\ud55c\ub2e4\uace0 \ud574\uc11c \ubcd1\ub82c\uc2a4\ud2b8\ub9bc\uc744 \uc774\uc6a9\ud574 \uc62c\ubc14\ub978 \uac12\uc744 \uc5bb\uae30 \ud798\ub4e4\ub2e4\ub294 \uac83\uc744 \uc54c\uac8c \ub418\uc5c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 WordCounter\uc640 \uc2a4\ud2b8\ub9bc\uc758 \uad6c\uc870\ub97c \ubcf4\uba74 \uc54c\uaca0\uc9c0\ub9cc, WordCounter\ub97c \uc798 \uad6c\ud604\ud55c\ub2e4\uace0 \ud574\ub3c4, \uc784\uc758\ub85c &#8216;\ud558\ub098\uc758 \uc5b4\uc808\uc744 \ucabc\uac1c\ub294&#8217; \ud589\uc704\ub97c stream\uc5d0\uc11c \ud574 \ubc84\ub9ac\uae30 \ub54c\ubb38\uc5d0, \ud604\uc7ac\uc758 \uad6c\uc870\ub85c\ub294 \ubcd1\ub82c\uc218\ud589\uc2dc\uc5d0 \uc624\ub2f5\uc774 \ub098\uc624\ub294 \uacbd\uc6b0\ub97c \ud574\uacb0\ud560 \uc218\uac00 \uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \uc774\ubc88\uc5d4 Spliterator\ub97c \uad6c\ud604\ud55c WordCounterSpliterator\ub97c \uc791\uc131\ud574 \ubcf8\ub2e4.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-15.png\" alt=\"\" class=\"wp-image-357\" width=\"692\" height=\"719\" srcset=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-15.png 692w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-15-289x300.png 289w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"672\" height=\"97\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-17.png\" alt=\"\" class=\"wp-image-359\" srcset=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-17.png 672w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/01\/image-17-300x43.png 300w\" sizes=\"auto, (max-width: 672px) 100vw, 672px\" \/><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 \uc774 WordCounterSpliterator \ub97c \ub2e4\uc74c\uacfc \uac19\uc774 \uc0ac\uc6a9\ud558\uba74&#8230;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Spliterator&lt;Character> spliterator = new WordCounterSpliterator(SENTENCE);\nStream&lt;Character> stream = StreamSupport.stream(spliterator, true);<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ubcd1\ub82c\ub85c(\ucf54\ub4dc \uc790\uccb4\uc758 \ubcd1\ub82c\ucc98\ub9ac \ub85c\uc9c1\uc740 \uc5c6\uc9c0\ub9cc, Spliterator\uc5d0 \uad6c\ud604\ub418\uc5b4\uc788\ub2e4. \uc6b0\ub9b0 &#8216;\ucabc\uac1c\ub294 \ub85c\uc9c1&#8217; \ub9cc \uc798 \uad6c\ud604\ud558\uba74 \uc54c\uc544\uc11c \uc798 \ucc98\ub9ac\ud574\uc900\ub2e4.) \uc2a4\ud2b8\ub9bc\uc744 \uc774\uc6a9\ud558\uc5ec \ucc98\ub9ac\ud560 \uc218\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ub9c8\uce58\uba70<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>\ub0b4\ubd80 \ubc18\ubcf5(recude\uac19\uc740\uac70)\uc744 \uc774\uc6a9\ud558\uba74 \uc2a4\ud2b8\ub9bc\uc744 \ubcd1\ub82c\ub85c \ucc98\ub9ac\ud560 \uc218 \uc788\ub2e4<ul><li>\ub2e8..\ud655\uc2e4\ud558\uc9c0 \uc54a\uc73c\uba74 \uc2b9\ubd80\ub97c \ubcf4\uc9c0 \ub9d0\uc544\ub77c.<\/li><\/ul><\/li><li>\ud56d\uc0c1 \ubcd1\ub82c\ucc98\ub9ac\uac00 \ube60\ub978 \uac83\uc740 \uc544\ub2c8\ub2e4. <ul><li>\ucf54\ub4dc\ub97c \uc9f0\uc73c\uba74 \ubc18\ub4dc\uc2dc \uce21\uc815\ud574 \ubd10\ub77c.<\/li><\/ul><\/li><li>\ud56d\uc0c1 \ubcd1\ub82c\ucc98\ub9ac\uac00 \ube60\ub978 \uac83\uc740 \uc544\ub2c8\ub2e4.<ul><li>\ucc98\ub9ac\ud574\uc57c \ud560 \ub370\uc774\ud130\uac00 \ub9ce\uc740 \uacbd\uc6b0, \ud639\uc740 \ud558\ub098\uc758 \ub3d9\uc791\uc5d0 \ub9ce\uc740 \uc2dc\uac04\uc774 \uac78\ub9b0 \uacbd\uc6b0\uc5d0 \uc131\ub2a5\uc744 \ub192\uc77c \uc218 \uc788\ub2e4.<\/li><\/ul><\/li><li>\uae30\ubcf8\ud615 \ud2b9\ud654 \uc2a4\ud2b8\ub9bc(IntStream,etc) \ub4f1 \uc62c\ubc14\ub978 \uc790\ub8cc\uad6c\uc870 \uc120\ud0dd(\ubc15\uc2f1&amp;\uc5b8\ubc15\uc2f1\uc744 \ud53c\ud568)\ud558\ub294\uac8c \ubcd1\ub82c\ucc98\ub9ac\ubcf4\ub2e4 \ub354 \ud6a8\uacfc\uc801\uc77c \uc218 \uc788\ub2e4. \ubcd1\ub82c\ucc98\ub9ac\ub294 \ub9cc\ub2a5\uc774 \uc544\ub2c8\ub2e4.<\/li><li>\ud3ec\ud06c\/\uc870\uc778 \ud504\ub808\uc784\uc6cc\ud06c\ub294 \ud3ec\ud06c(for) \ud558\uc5ec \uc791\uc5c5\uc744 \ubd84\ud560\ud574 \uc218\ud589\ud55c \ud6c4, \uc870\uc778(join) \ud558\ub294 \ud504\ub808\uc784\uc6cc\ud06c\ub2e4<\/li><li>Splietator\ub97c \uc0ac\uc6a9\ud558\uba74 \uc2a4\ud2b8\ub9bc API\ub97c \uc774\uc6a9\ud558\uba74\uc11c \uc880 \ub354 \ud3b8\ud558\uac8c \ubcd1\ub82c\ucc98\ub9ac\ub97c \ud560 \uc218\uac00 \uc788\ub2e4<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>7.2.1. \uae4c\uc9c0&#8230;. \ubcd1\ub82c \uc2a4\ud2b8\ub9bc!!! \uceec\ub809\uc158\uc5d0\uc11c parallelStream\uc744 \ud638\ucd9c\ud574\uc11c \ubcd1\ub82c \uc2a4\ud2b8\ub9bc\uc744 \uc0dd\uc131\ud560 \uc218 \uc788\uc74c 1 ~ n\uae4c\uc9c0 \ud569\uc744 \uad6c\ud558\ub294 \uba54\uc18c\ub4dc\ub97c \ub9cc\ub4e0\ub2e4\uace0 \ud558\uc790. \uc77c\ubc18\uc801\uc778 \uc2a4\ud2b8\ub9bc\uc744 \uc0ac\uc6a9\ud55c\ub2e4\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uc791\uc131\ub420 \uc218 \uc788\ub2e4. \uadf8\ub7fc \uc774\uc81c \ubcd1\ub82c \uc2a4\ud2b8\ub9bc\uc744 \uc774\uc6a9\ud558\uc5ec\ubcf4\uc790. \uac04\ub2e8\ud558\ub2e4&#8230;. \uadf8\ub9bc\uc73c\ub85c\ub294 \ub450\uac1c\uc758 \uccad\ud06c\ub9cc \ucabc\uac1c\uc9c0\ub294 \uac83\uc744 \ud45c\ud604\ud558\uc600\uc9c0\ub9cc, \ub531 \ub450\uac1c\ub85c \ucabc\uac1c\uc9c0\uc9c0\ub294 \uc54a\ub294\ub2e4. \ubcd1\ub82c \uc2a4\ud2b8\ub9bc\uc758 \ub0b4\ubd80\uc801\uc778 \uad6c\uc870\ub97c \uc0b4\ud3b4\ubcf4\uba74, ForkJoinPool\uc744 \uc0ac\uc6a9\ud55c\ub2e4\uace0 \ud55c\ub2e4. \ud504\ub85c\uc138\uc11c\uc758 \uc218\uc640 \ub3d9\uc77c\ud558\uac8c &#8230; <a title=\"\ubaa8\ub358 \uc790\ubc14 \uc778 \uc561\uc158 7\uc7a5\" class=\"read-more\" href=\"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/2021\/01\/21\/%eb%aa%a8%eb%8d%98-%ec%9e%90%eb%b0%94-%ec%9d%b8-%ec%95%a1%ec%85%98-7%ec%9e%a51\/\" aria-label=\"Read more about \ubaa8\ub358 \uc790\ubc14 \uc778 \uc561\uc158 7\uc7a5\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-299","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/299","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=299"}],"version-history":[{"count":30,"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/299\/revisions"}],"predecessor-version":[{"id":367,"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/299\/revisions\/367"}],"wp:attachment":[{"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}