{"id":50,"date":"2014-06-10T08:25:58","date_gmt":"2014-06-09T23:25:58","guid":{"rendered":"http:\/\/blog.fupfin.com\/?p=50"},"modified":"2014-06-10T08:38:39","modified_gmt":"2014-06-09T23:38:39","slug":"%ec%99%9c-%ec%9e%90%eb%b0%94%eb%8a%94-%ed%8f%ac%ed%9a%8d%eb%90%9c-%ec%a7%80%ec%97%ad-%eb%b3%80%ec%88%98captured-local-variable%ea%b0%80-%eb%b6%88%eb%b3%80final%ec%9d%b4%ec%96%b4%ec%95%bc-%ed%95%98","status":"publish","type":"post","link":"https:\/\/blog.fupfin.com\/?p=50","title":{"rendered":"\uc65c \uc790\ubc14\ub294 \ud3ec\ud68d\ub41c \uc9c0\uc5ed \ubcc0\uc218(Captured Local Variable)\uac00 \ubd88\ubcc0(final)\uc774\uc5b4\uc57c \ud558\ub294 \uac00?"},"content":{"rendered":"<p>\uc694\uc998 \uc790\ubc14 8\uc758 \ub78c\ub2e4\uc2dd \ub54c\ubb38\uc778\uc9c0 \uc9c0\uc5ed \ud074\ub798\uc2a4(Local Class), \ubb34\uba85 \ud074\ub798\uc2a4(Anonymous Class), \ub78c\ub2e4\uc2dd(Lambda Expression)\uc5d0\uc11c \ud3ec\ud68d\ub41c \uc9c0\uc5ed \ubcc0\uc218\uac00 final\ub85c \uba85\uc2dc\ub418\uac70\ub098 &#8220;\uc0ac\uc2e4\uc0c1 final(\uc790\ubc14 8\uc5d0\uc11c \uba85\uc2dc\uc801\uc73c\ub85c final \ud0a4\uc6cc\ub4dc\uac00 \ubd99\uc9c0\ub294 \uc54a\uc558\uc9c0\ub9cc \ub300\ub300\uc785\ubb38\uc73c\ub85c \uac12\uc744 \ubc14\uafb8\uc9c0 \uc54a\uc544 \uc0ac\uc2e4\uc0c1 \uac12\uc774 \ubc14\ub00c\uc9c0 \uc54a\ub294 \ubcc0\uc218\ub97c \uac00\ub9ac\ud0a4\ub294 \uc6a9\uc5b4)&#8221;\uc774\uc5b4\uc57c \ud558\ub294 \uc774\uc720\ub97c \ub450\uace0 \uc628\ub77c\uc778\uc774\ub098 \uc624\ud504\ub77c\uc778\uc5d0\uc11c \ud1a0\ub860\ud558\ub294 \uc77c\uc774 \ub9ce\uc544\uc84c\uc2b5\ub2c8\ub2e4. \uc800\ud76c \ud300\uc5d0\uc11c\ub3c4 \uc9c0\ub09c \uc8fc\uc5d0 \uc774\ub97c \uac00\uc9c0\uace0 \uc758\uacac\uc744 \uc8fc\uace0 \ubc1b\uc558\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774 \ub54c \ub9d0\ud55c \ub0b4\uc6a9\uc744 \uc870\uae08 \uc790\uc138\ud788 \uc815\ub9ac\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>\ub0b4\ubd80 \ud074\ub798\uc2a4 \uc608\uc81c<br \/>\n<\/strong><\/p>\n<p>\uba3c\uc800 \uac04\ub2e8\ud55c \uc608\uc81c \ucf54\ub4dc\ub97c \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc880 \uc4f8\ubaa8\uc788\ub294 \uc608\uc81c\ub97c \uc791\uc131\ud558\ub824 \ud588\uc9c0\ub9cc \uc5ed\uc2dc\ub098 \uadf8\ub9ac \uc720\uc6a9\ud55c \ucf54\ub4dc\ub294 \uc544\ub2d9\ub2c8\ub2e4. \uc608\uc81c\ub85c \ub9cc\ub4e0 AsyncPrinter \ud074\ub798\uc2a4\ub294 \ube44\ub3d9\uae30\ub85c \ubb38\uc790\uc5f4\uc744 \ucd9c\ub825\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"theme:eclipse font-size:10 line-height:12 lang:java decode:true\">package com.fupfin.capvar;\n\nimport java.io.PrintStream;\nimport java.util.concurrent.*;\n\npublic class  AsyncPrinter {\n    private ExecutorService executor;\n    private PrintStream out;\n    private String prefix;\n    private String suffix;\n\n    public AsyncPrinter(ExecutorService executor, PrintStream out, String prefix, String suffix) {\n        this.executor = executor;\n        this.out = out;\n        this.prefix = prefix;\n        this.suffix = suffix;\n    }\n\n    public void printnln(final String str, final int maxlen) {\n        final int len = str.length() &gt; maxlen &amp;&amp; maxlen &gt;= 0 ? maxlen : str.length();\n        executor.submit(new Runnable() {\n            @Override public void run() {\n                out.println(prefix + str.substring(0, len) + suffix);\n            }\n        });\n    }\n}\n<\/pre>\n<p><!--more--><\/p>\n<p>\ub300\ub7b5 \ubcf4\uba74 \uc0dd\uc131\uc790 \ud558\ub098\uc640 \uacf5\uac1c \uba54\uc11c\ub4dc \ud558\ub098\uac00 \ub208\uc5d0 \ub755\ub2c8\ub2e4.<\/p>\n<p>\uc0dd\uc131\uc790\ub294 \uc778\uc790\ub97c \ub124 \uac1c \ubc1b\ub294 \ub370, \uccab \ubc88\uc9f8 \ub9e4\uac1c\ubcc0\uc218\uc778 executor\ub294\u00a0\ube44\ub3d9\uae30\ub85c \uc791\uc5c5\uc744 \uc2e4\ud589\ud560 \ub54c \uc0ac\uc6a9\ud560 ExecutorService\uc758 \uad6c\ud604\uccb4\ub97c \ubc1b\uc2b5\ub2c8\ub2e4.\u00a0 \ub450 \ubc88\uc9f8 \ub9e4\uac1c\ubcc0\uc218 out\uc740 \ubb38\uc790\uc5f4\uc744 \ucd9c\ub825\ud560 PrintStream\uc785\ub2c8\ub2e4. \uc138 \ubc88\uc9f8\uc640 \ub124 \ubc88\uc9f8\ub294 \ucd9c\ub825\ub420 \ubb38\uc790\uc5f4\uc758 \uc55e\uacfc \ub4a4\uc5d0 \ub367\ubd99\uc5ec\uc9c8 \ubb38\uc790\uc5f4\ub85c\uc11c \ucd9c\ub825\ub420 \ubb38\uc790\uc5f4\uc744 \uafb8\ubc09\ub2c8\ub2e4.<\/p>\n<p>\uc720\uc77c\ud55c \uacf5\uac1c \uba54\uc11c\ub4dc printnln(&#8230;)\ub294 \uccab \ubc88\uc9f8 \uc778\uc790\ub85c \ubc1b\uc740 \ubb38\uc790\uc5f4\uc744 \ubc1b\uace0 \ub450 \ubc88\uc9f8 \uc778\uc790\ub85c \ucd9c\ub825\ud55c \ubb38\uc790\uc5f4\uc758 \uae38\uc774\ub97c \ubc1b\uc2b5\ub2c8\ub2e4. \uc804\ub2ec \ubc1b\uc740 \ubb38\uc790\uc5f4\uc744 \ucc98\uc74c\ubd80\ud130 \uae38\uc774 \ub9cc\ud07c \ub9cc \uc798\ub77c\uc11c \ube44\ub3d9\uae30\ub85c \ucd9c\ub825\ud569\ub2c8\ub2e4.<\/p>\n<p>\uba54\uc11c\ub4dc \ub0b4\ubd80\ub97c \ubcf4\uba74, \uba3c\uc800 \ucd9c\ub825\ud560 \ubb38\uc790\uc5f4\uc758 \uc815\ud655\ud55c \uae38\uc774\ub97c \uc5bb\uc5b4\uc11c \ubcc0\uc218 len\uc5d0 \ub2f4\uc2b5\ub2c8\ub2e4. \ub450\ubc88\uc9f8 \uc778\uc790\uac12\uc774 \ubb38\uc790\uc5f4\ubcf4\ub2e4 \uae38\uba74 \ubb38\uc790\uc5f4\uc744 \uc790\ub974\ub294 \uacfc\uc815\uc5d0\uc11c \uc608\uc678(IndexOutOfBoundsException)\uac00 \ubc1c\uc0dd\ud558\uae30 \ub54c\ubb38\uc5d0 \uc801\uc808\ud55c \uae38\uc774 \uac12\uc744 \uacc4\uc0b0\ud558\ub824\uace0 \ub9cc\ub4e0 \ucf54\ub4dc\uc785\ub2c8\ub2e4.\u00a0 len \uac12\uc744 \uacc4\uc0b0\ud558\uace0 \ub098\uba74 \uc0dd\uc131\uc790\ub85c \uc804\ub2ec\ubc1b\uc740 ExecutorService\uc5d0 \ube44\ub3d9\uae30\ub85c \uc2e4\ud589\ud560 \uc791\uc5c5\uc744 \uc0dd\uc131\ud574\uc11c \uc81c\ucd9c\ud569\ub2c8\ub2e4.<\/p>\n<p>\ube44\ub3d9\uae30\ub85c \uc2e4\ud589\ub420 \uc791\uc5c5 \ub0b4\ubd80\uc5d0\uc11c\ub294 \ucd9c\ub825\ud55c \ubb38\uc790\uc5f4\uc744 len \ub9cc\ud07c \uc798\ub77c\uc11c \uc55e \ub4a4\uc5d0 prefix\uc640 suffix \ubb38\uc790\uc5f4\uc744 \ub367\ubd99\uc774\uace0 AsyncPrinter\uc758 \uc0dd\uc131\uc790\ub85c \ubc1b\uc740 PrintStream\uc5d0 \ucd9c\ub825\ud569\ub2c8\ub2e4.<\/p>\n<p>AsyncPrinter\ub97c \uc0ac\uc6a9\ud558\ub294 \ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"font-size:10 line-height:12 lang:java decode:true\">AsyncPrinter printer = new AsyncPrinter(ForkJoinPool.commonPool(), System.out,  \"&lt;&lt;\", \"&gt;&gt;\");\nprinter.printnln(\"Hello, World!\", 5);\nForkJoinPool.commonPool().awaitQuiescence(1, TimeUnit.SECONDS);<\/pre>\n<p>AsyncPrinter \ud074\ub798\uc2a4\uc758 \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uba74\uc11c \uc0dd\uc131\uc790\uc5d0 \uc804\ub2ec\ud558\ub294 \ucc98\uc74c \ub450 \uc778\uc790\ub294 ForkJoinPool\uc758 commonPool() \uc815\uc801 \uba54\uc11c\ub4dc\ub85c \uc5bb\ub294, \uc790\ubc14 8\uc5d0 \uc0c8\ub85c \ucd94\uac00\ub41c \uacf5\uc6a9 ForkJoinPool\uacfc \ud45c\uc900 \ucd9c\ub825(System.out)\uc785\ub2c8\ub2e4.\u00a0 \uadf8\ub9ac\uace0 \uc7a5\uc2dd\uc6a9 \ubb38\uc790\uc5f4\ub85c &#8220;&lt;&lt;&#8220;\uc640 &#8220;&gt;&gt;&#8221;\ub97c \uc774\uc5b4\uc11c \uc804\ub2ec\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uac1d\uccb4\uc758 printnln(&#8230;) \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud558\uba74\uc11c &#8220;Hello, World!&#8221;\ub780 \ubb38\uc790\uc5f4\uacfc \uc22b\uc790 5\ub97c \uc778\uc790\ub85c \uc804\ub2ec\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub9c8\uc9c0\ub9c9\uc5d0 \ube44\ub3d9\uae30 \uc791\uc5c5\uc774 \uc2e4\ud589\ub418\uc9c0 \uc54a\uace0 \ud504\ub85c\uadf8\ub7a8\uc774 \ub05d\ub098\uc9c0 \uc54a\ub3c4\ub85d awaitQuiescence(&#8230;) \uba54\uc11c\ub4dc\ub97c \ud638\ucd9c\ud574 1\ucd08\uac04 \uae30\ub2e4\ub9bd\ub2c8\ub2e4.<\/p>\n<p>\uc774 \ucf54\ub4dc\uc758 \uc2e4\ud589 \uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"font-size:10 line-height:12 lang:default decode:true\">&lt;&lt;Hello&gt;&gt;<\/pre>\n<p>\uc0dd\uc131\uc790\uc5d0 \uc804\ub2ec\ud55c prefix\uc640 suffix\uac00 &#8220;Hello, World!&#8221;\uc758 \ucc98\uc74c \ub2e4\uc12f\uc790 \uc55e\ub4a4\uc5d0 \ub367\ubd99\uc5ec\uc838 \ucd9c\ub825\ub41c \uac83\uc73c\ub85c \ubd10\uc11c\ub294 \uc815\uc0c1\uc801\uc73c\ub85c \ub3d9\uc791\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>\uc678\uacfd \ud074\ub798\uc2a4(Outer Class) \uba64\ubc84 \ud544\ub4dc \uc811\uadfc<\/strong><\/p>\n<p>\uc704 \ucf54\ub4dc\uc5d0\uc11c ExecuterService\uc5d0 \uc81c\ucd9c\ub418\ub294 Runnable \uc778\ud130\ud398\uc774\uc2a4\uc758 \uad6c\ud604\uccb4\ub294 \uc678\uacfd \ud074\ub798\uc2a4\uc778 AsyncPrinter\uc758 \ud544\ub4dc(out, prefix, suffix)\uc5d0 \ub9c8\uce58 \ub3d9\uc77c \ud074\ub798\uc2a4 \ub0b4 \uba64\ubc84 \ud544\ub4dc\ub098 \ub85c\uceec \ubcc0\uc218\uc778 \uac83 \ucc98\ub7fc \uc9c1\uc811 \uc811\uadfc\ud569\ub2c8\ub2e4.<\/p>\n<p>\uc6b0\ub9ac\uac00 \ub9cc\ub4e0 Runnable\uc758 \uad6c\ud604\uccb4\ub294 \ubb34\uba85 \ud074\ub798\uc2a4\uc778\ub370, \uc790\ubc14\uc5d0\uc11c\ub294 \ubb34\uba85 \ud074\ub798\uc2a4 \ubfd0 \uc544\ub2c8\ub77c \ub85c\uceec \ud074\ub798\uc2a4, \uc778\uc2a4\ud134\uc2a4 \ud074\ub798\uc2a4 \ub4f1 \ubaa8\ub4e0 \ub0b4\ubd80 \ud074\ub798\uc2a4(Inner Class)\uac00 \uc678\uacfd \ud074\ub798\uc2a4(Outer Class)\uc758 \uba64\ubc84 \ud544\ub4dc\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub9cc\uc57d run(&#8230;) \uba54\uc11c\ub4dc \ub0b4\ubd80\uc5d0 \uc678\uacfd \ud074\ub798\uc2a4\uc758 \uba64\ubc84\uc640 \ub3d9\uc77c\ud55c \uc774\ub984\uc758 \ubcc0\uc218\uac00 \uc788\uc5b4\uc11c <a href=\"http:\/\/docs.oracle.com\/javase\/tutorial\/java\/javaOO\/nested.html#shadowing\">\uadf8\ub9bc\uc790 \ud6a8\uacfc(Shadowing)<\/a>\uac00 \uc77c\uc5b4\ub09c\ub2e4\uace0 \ud574\ub3c4 AsyncPrinter.this.out, AsyncPrinter.this.prefix, AsyncPrinter.this.suffix\uc640 \uac19\uc774 \uba85\uc2dc\uc801\uc73c\ub85c \uc774\ub984 \uacf5\uac04\uc744 \uc801\uc5b4\uc8fc\uba74 \uc811\uadfc\ud558\ub294\ub370 \uc544\ubb34\ub7f0 \ubb38\uc81c\ub3c4 \uc0dd\uae30\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uacb0\uad6d \uc608\uc81c\uc758 \ubb34\uba85 \ud074\ub798\uc2a4 \uc548 \ub85c\uc9c1\uc740 \ub2e4\uc74c\uacfc \ub3d9\uc77c\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"font-size:10 line-height:12 lang:java decode:true\">AsyncPrinter.this.out.println(\n        AsyncPrinter.this.prefix + \n        str.substring(0, len) + \n        AsyncPrinter.this.suffix);<\/pre>\n<p>\uadf8\ub7fc \ub0b4\ubd80 \ud074\ub798\uc2a4\ub294 \uc5b4\ub5bb\uac8c \uc790\uc2e0\uc758 \uba64\ubc84\uac00 \uc544\ub2cc \uc678\uacfd \ud074\ub798\uc2a4\uc758 \uba64\ubc84\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub294 \uac78\uae4c\uc694?<\/p>\n<p>\uadf8\uac74 \uc790\ubc14\uac00 \uc790\ub3d9\uc73c\ub85c \ubaa8\ub4e0 \ub0b4\ubd80 \ud074\ub798\uc2a4(Inner Class)\uc758 \uac1d\uccb4\uc5d0 \uba64\ubc84 \ud544\ub4dc\uc5d0 \uc678\uacfd \ud074\ub798\uc2a4\uc758 \ucc38\uc870\ub97c \ub123\uc5b4 \ub450\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \uc790\ubc14\uac00 \uc678\uacfd \ud074\ub798\uc2a4\uc5d0 \uc811\uadfc\ud558\ub294 \uc7a5\uce58\ub97c \uc81c\uacf5\ud558\uc9c0 \uc54a\ub294\ub2e4\uace0 \uac00\uc815\ud55c\ub2e4\uba74 \uc6b0\ub9ac\ub294 \uc544\ub9c8\ub3c4 \uc608\uc81c\uc758 \ucf54\ub4dc\ub97c \uc774\ub807\uac8c, \uba85\uc2dc\uc801\uc73c\ub85c \uc0dd\uc131\uc790\uc5d0 \uc678\uacfd \ud074\ub798\uc2a4\uc758 \ucc38\uc870\ub97c \ub118\uae30\ub3c4\ub85d \ubc14\uafb8\uc5b4\uc57c \ud560 \uac81\ub2c8\ub2e4.<\/p>\n<pre class=\"font-size:10 line-height:12 lang:java decode:true\">public void printnln(final String str, final int maxlen) {\n    final int len = str.length() &lt; maxlen ? str.length() : maxlen;\n\n    class Task implements Runnable {\n\n        private final AsyncPrinter outer;\n\n        Task(AsyncPrinter outer) {\n            this.outer = outer;\n        }\n\n        @Override public void run() {\n            outer.out.println(outer.prefix + str.substring(0, len) + outer.suffix);\n        }\n    };\n    executor.submit(new Task(this));\n}<\/pre>\n<p>\uba3c\uc800 \uc0dd\uc131\uc790\uac00 \ud544\uc694\ud55c\ub370 \ubb34\uba85 \ud074\ub798\uc2a4\ub294 \uc0dd\uc131\uc790\ub97c \ub9cc\ub4e4 \uc218 \uc5c6\uc73c\ub2c8 \uc9c0\uc5ed \ud074\ub798\uc2a4(Local Class)\ub85c \ubc14\uafb8\uc5c8\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \uc678\uacfd \ud074\ub798\uc2a4\uc758 \ucc38\uc870\ub97c \uc0dd\uc131\uc790 \uc778\uc790\ub85c \ub118\uae30\uace0 \uc774\ub97c \uc9c0\uc5ed \ud074\ub798\uc2a4\uc758 \uba64\ubc84\ub85c \uc800\uc7a5\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c \uc9c0\uc5ed \ud074\ub798\uc2a4\uc5d0\uc11c\ub294 \uc0dd\uc131\uc790\ub85c \ubc1b\uc740 \uc678\uacfd \ud074\ub798\uc2a4\uc758 \ucc38\uc870\ub97c \uc774\uc6a9\ud574\uc11c \uadf8 \uba64\ubc84\uc5d0 \uc811\uadfc \ud569\ub2c8\ub2e4.<\/p>\n<p>\ubb3c\ub860 \uc790\ubc14\uac00 \uc9c4\uc9dc\ub85c \uc774\ub7f0 \uc0dd\uc131\uc790\ub97c \uc9c4\uc9dc\ub85c \ub9cc\ub4dc\ub294 \uac74 \uc544\ub2d9\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \ub0b4\ubd80 \ud074\ub798\uc2a4\uc758 \uac1d\uccb4\uac00 \uc0dd\uc131\ub420 \ub54c \ub9c8\ub2e4 \uc678\uacfd \ud074\ub798\uc2a4\uc758 \ucc38\uc870\ub97c \ub0b4\ubd80 \ud074\ub798\uc2a4\uc758 \uba64\ubc84 \ud544\ub4dc\uc5d0 \uc800\uc7a5\ud558\uae30 \ub54c\ubb38\uc5d0 \ub0b4\ubd80 \ud074\ub798\uc2a4\ub294 \ub9c8\uce58 \uc790\uae30 \ub0b4\ubd80\uc758 \uba64\ubc84\uc5d0 \uc811\uadfc\ud558\ub4ef \uc678\uacfd \ud074\ub798\uc2a4\uc758 \uba64\ubc84\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\uac8c \ub429\ub2c8\ub2e4.<\/p>\n<p>\uc790\ubc14\ub294 \uc774\ub807\uac8c \ub0b4\ubd80 \ud074\ub798\uc2a4\uc640 \uc678\uacfd \ud074\ub798\uc2a4\uc758 \uacb0\ud569\ub3c4\ub97c \ub192\uc5ec\uc11c \ubd88\ud544\uc694\ud55c \uac04\uc811 \ucc98\ub9ac\ub97c \uc0dd\ub7b5\ud560 \uc218 \uc788\uac8c \ud574\uc90d\ub2c8\ub2e4.<\/p>\n<p><strong>\uc9c0\uc5ed \ubcc0\uc218 \ud3ec\ud68d<\/strong><\/p>\n<p>\ub2e4\uc2dc \uc608\uc81c\uc5d0\uc11c \ube44\ub3d9\uae30\ub85c \uc2e4\ud589\ub418\ub294 \ucf54\ub4dc\ub97c \ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"font-size:10 line-height:12 lang:java decode:true\">out.println(prefix + str.substring(0, len) + suffix);<\/pre>\n<p>out, prefix, suffix \uac19\uc740 \uc678\uacfd \uac1d\uccb4\uc758 \uba64\ubc84\uc5d0 \uc9c1\uc811 \uc811\uadfc\ud560 \uc218 \uc788\ub294 \uc774\uc720\ub294 \uc774\uc81c \ubc1d\ud600\uc84c\ub294\ub370 str, len\ub294 \uc678\uacfd \uac1d\uccb4\uc758 \ucc38\uc870\ub97c \uac00\uc9c0\uace0 \uc788\ub354\ub77c\ub3c4 \uc811\uadfc\ud560 \ubc29\ubc95\uc774 \uc5c6\ub294, printnln(&#8230;) \uba54\uc11c\ub4dc\uc758 \ub9e4\uac1c\ubcc0\uc218\uc640 \uc9c0\uc5ed \ubcc0\uc218\uc785\ub2c8\ub2e4. \uc678\uacfd \uac1d\uccb4\uc758 \ub9f4\ubc84 \ud544\ub4dc\ub294 \ud799(Heap)\uc5d0 \ubcf4\uad00\uc774 \ub418\ubbc0\ub85c \ucc38\uc870\ub97c \uc54c\uba74 \uc811\uadfc\ud560 \uc218 \uc788\uc9c0\ub9cc, \uba54\uc11c\ub4dc\uc758 \uc778\uc790\uc640 \uc9c0\uc5f0 \ubcc0\uc218 \uac12\uc740 \uc2a4\ud0dd \ud504\ub808\uc784\uc5d0 \ubcf4\uad00\ub418\ubbc0\ub85c \uac1d\uccb4 \ucc38\uc870\ub97c \uc548\ub2e4\uace0 \uc811\uadfc\ud560 \uc218 \uc788\ub294 \uac12\uc774 \uc544\ub2d9\ub2c8\ub2e4.<\/p>\n<p>\uc5ec\uae30\uc11c \uc790\ubc14 \ucef4\ud30c\uc77c\ub7ec\uac00 \ud55c \ubc88 \ub354 \ub9c8\ubc95\uc744 \ubd80\ub9bd\ub2c8\ub2e4. \uc55e\uc5d0\uc11c \ub0b4\ubd80 \ud074\ub798\uc2a4\uc758 \uac1d\uccb4\ub97c \uc0dd\uc131\ud560 \ub54c\uc5d0 \uc678\uacfd \ud074\ub798\uc2a4\uc758 \ucc38\uc870\ub97c \ub0b4\ubd80 \ud074\ub798\uc2a4\uc758 \uba64\ubc84\uc5d0 \ubcf5\uc0ac\ud558\ub294 \uac83\ucc98\ub7fc, \ub0b4\ubd80 \ud074\ub798\uc2a4 \uc911 \uba54\uc11c\ub4dc \uc548\uc5d0\uc11c \uc815\uc758\ub418\uace0 \uc0dd\uc131\ub418\ub294 \uc9c0\uc5ed \ud074\ub798\uc2a4(Local Class)\uc640 \ubb34\uba85 \ud074\ub798\uc2a4(Anonymous Class)\uc758 \uacbd\uc6b0, \uadf8 \uac1d\uccb4\ub97c \uc0dd\uc131\ud560 \ub54c\uc5d0, \uc9c0\uc5ed \ud074\ub798\uc2a4\uc640 \ubb34\uba85 \ud074\ub798\uc2a4\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \uc678\uacfd \ube14\ub7ed\uc758 \uc9c0\uc5ed \ubcc0\uc218\uc640 \ub9e4\uac1c\ubcc0\uc218\ub97c \uc9c0\uc5ed \ud074\ub798\uc2a4\uc640 \ubb34\uba85 \ud074\ub798\uc2a4\uc758 \uba64\ubc84 \ud544\ub4dc\ub85c \ubcf5\uc0ac\ud569\ub2c8\ub2e4. \uc774\ub97c <strong>\ubcc0\uc218 \ud3ec\ud68d<\/strong>\uc774\ub77c\uace0 \ubd80\ub985\ub2c8\ub2e4.<\/p>\n<p>\uc5ed\uc2dc \ub9d0\ub85c \ud558\ub824\ub2c8 \ud798\ub4dc\ub124\uc694. \u3160\u3160<\/p>\n<p>\uc704\uc5d0\uc11c \ucc98\ub7fc \ucf54\ub4dc\ub85c \ud45c\ud604\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc790\ubc14\uac00 \ubcc0\uc218\ub97c \ud3ec\ud68d\ud558\uc9c0 \uc54a\ub294\ub2e4\uba74 \uc544\ub9c8\ub3c4 \uc6b0\ub9ac\ub294 \uc608\uc81c\uc758 \ucf54\ub4dc\ub97c \uc774\ub807\uac8c \ubc14\uafb8\uc5b4\uc57c \ud588\uc744 \uac81\ub2c8\ub2e4.<\/p>\n<pre class=\"font-size:10 line-height:12 lang:java decode:true\">public void printnln(final String str, final int maxlen) {\n    class Task implements Runnable {\n\n        private final AsyncPrinter outer;\n        private String str;\n        private int len;\n\n        Task(AsyncPrinter outer, String str, int len) {\n            this.outer = outer;\n            this.str = str;\n            this.len = len;\n        }\n\n        @Override public void run() {\n            outer.out.println(outer.prefix + str.substring(0, len) + outer.suffix);\n        }\n    };\n\n    int len = str.length() &lt; maxlen ? str.length() : maxlen;\n    executor.submit(new Task(this, str, len));\n}<\/pre>\n<p>\uc9c0\uc5ed \ud074\ub798\uc2a4\uc5d0 \uba64\ubc84 \ud544\ub4dc\uc640 \uc0dd\uc131\uc790\uc758 \ub9e4\uac1c\ubcc0\uc218\uac00 \ub298\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4. \uc774\uc81c \uba85\uc2dc\uc801\uc73c\ub85c str\uacfc len\uc744 \uc9c0\uc5ed \ud074\ub798\uc2a4\uc758 \uc0dd\uc131\uc790\ub85c \ub118\uae41\ub2c8\ub2e4. \uc0ac\uc18c\ud55c \ubd80\ubd84\uc774\uc9c0\ub9cc, \uc774\uc81c\ub294 \ubcc0\uc218 len\uc744 \uc9c0\uc5ed \ud074\ub798\uc2a4 \uc815\uc758 \ub4a4\uc5d0 \uc815\uc758\ud560 \uc218 \uc788\uace0 final\uc77c \ud544\uc694\ub3c4 \uc5c6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774\ub807\uac8c \uc790\ubc14\uac00 \ubcc0\uc218 \ud3ec\ud68d\uc744 \uc790\ub3d9\uc73c\ub85c \ud574\uc8fc\uc9c0 \uc54a\uc73c\uba74 \ud504\ub85c\uadf8\ub798\uba38\uac00 \uc9c1\uc811 \uc9c0\uc5ed \ud074\ub798\uc2a4 \ub0b4\ubd80\uc5d0\uc11c \ud544\uc694\ub85c\ud558\ub294 \uac12\uc744 \uc0dd\uc131\uc790\uc5d0\uc11c \ub118\uaca8 \ubc1b\uc544 \ub9f4\ubc84 \ud544\ub4dc\uc5d0 \ubcf4\uad00\ud558\uace0 \uc0ac\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<p>\uc815\ub9ac\ud558\uba74, \uc6d0\ub798\ub294 \uc704 \ucf54\ub4dc\ucc98\ub7fc \uba85\uc2dc\uc801\uc73c\ub85c \uba54\uc11c\ub4dc \ub0b4\uc758 \uc9c0\uc5ed \ubcc0\uc218\uc640 \uc778\uc790\uac12\uc744 \uc804\ub2ec\ud574\uc11c \uc0ac\uc6a9\ud574\uc57c \ud558\uc9c0\ub9cc, \uc790\ubc14\uac00 \uc790\ub3d9\uc73c\ub85c \uc9c0\uc5ed \ud074\ub798\uc2a4\ub098 \ubb34\uba85 \ud074\ub798\uc2a4\uac00 \ud544\uc694\ub85c \ud558\ub294 \ub85c\uceec \ubcc0\uc218\ub098 \uc778\uc790\ub97c \uc778\uc2a4\ud134\uc2a4\uc5d0 \ubcf5\uc0ac\ud574 \uc8fc\uae30 \ub54c\ubb38\uc5d0 \uad73\uc774 \uc0dd\uc131\uc790\ub97c \ud1b5\ud574 \uc804\ub2ec\ud55c\ub2e4\uac70\ub098 \ud558\ub294 \uc791\uc5c5 \uc5c6\uc774 \uadf8 \ubcc0\uc218 \uac12\uc744 \uc5bb\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub807\uac8c \uc790\ub3d9\uc73c\ub85c \ubcc0\uc218\ub97c \ubcf5\uc0ac\ud558\ub294 \uc791\uc5c5\uc744 \ubcc0\uc218 \ud3ec\ud68d\uc774\ub77c\uace0 \ubd80\ub985\ub2c8\ub2e4.<\/p>\n<p>\ub0b4\ubd80 \ud074\ub798\uc2a4 \uc911 \uba54\uc11c\ub4dc \uc548\uc5d0 \uc815\uc758\ud560 \uc218 \uc788\ub294 \uc9c0\uc5ed \ud074\ub798\uc2a4\uc640 \ubb34\uba85 \ud074\ub798\uc2a4\ub294 \uc678\uacfd \ud074\ub798\uc2a4\uc758 \uba64\ubc84 \ubfd0 \uc544\ub2c8\ub77c \uc790\uc2e0\uc774 \uc815\uc758\ub41c \uba54\uc11c\ub4dc\uc758 \uc9c0\uc5ed \ubcc0\uc218\uc640 \uc778\uc790\uc5d0\ub3c4 \uc811\uadfc\ud560 \uc218 \uc788\uc5b4 \ud574\ub2f9 \uba54\uc11c\ub4dc\uc758 \uc77c\ubd80\ub77c\uace0 \ud560 \uc218 \uc788\uc744 \uc815\ub3c4\ub85c \uacb0\ud569\ub3c4\uac00 \ub192\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc2ec\uc9c0\uc5b4 \uc790\ubc14 8\uc5d0 \uc0c8\ub85c \ucd94\uac00\ub41c \ub78c\ub2e4\ub294, \uc0ac\uc2e4 \ubb34\uba85 \ud074\ub798\uc2a4\uc640 \ube44\uc2b7\ud558\uac8c \ubcc4\ub3c4\uc758 \uac1d\uccb4\uac00 \uc0dd\uc131\ub428\uc5d0\ub3c4, \ub9c8\uce58 \ucf54\ub4dc \ube14\ub7ed\uc778 \ub0e5 \uc790\uc2e0\uc774 \uc815\uc758\ub41c \uba54\uc11c\ub4dc\uc640 \ub3d9\uc77c\ud55c \ubcc0\uc218 \uc601\uc5ed(Lexcical Scope)\uc744 \uac16\uc2b5\ub2c8\ub2e4. \uadf8\ub798\uc11c \ub78c\ub2e4\uc2dd \uc548\uc5d0\uc11c \uc0ac\uc6a9\ub418\ub294 this \ud0a4\uc6cc\ub4dc\ub294 \ub78c\ub2e4\uc2dd\uc73c\ub85c \uc778\ud574 \uc0dd\uc131\ub418\ub294 \uac1d\uccb4\uac00 \uc544\ub2c8 \uc678\uacfd \ud074\ub798\uc2a4\uc758 \uac1d\uccb4\ub97c \uac00\ub9ac\ud0b5\ub2c8\ub2e4.<\/p>\n<p><strong><strong>\uadf8\ub798 \uc54c\uaca0\ub294\ub370 \uc65c <\/strong>\ubd88\ubcc0(final)\uc774\uc5b4\uc57c \ud558\ub294\ub370?<\/strong><\/p>\n<p>SW \uac1c\ubc1c \uae30\uc220\uc5d0 \ub300\ud574\uc11c \uc65c\ub0d0\uace0 \ubb3b\ub294 \uc0ac\ub78c\uc740 \ub9ce\uc740 \uacbd\uc6b0 \uc0ac\uc2e4 \ub450 \uac00\uc9c0\ub97c \ubb3b\ub294 \uac83\uc785\ub2c8\ub2e4. \ud558\ub098\ub294 \uadf8\ub9ac\ub420 \uc218 \ubc16\uc5d0 \uc5c6\ub294 \uae30\uc220\uc801 \uad6c\uc870\uc5d0 \ub300\ud55c \uc9c8\ubb38\uc774\uace0, \ub2e4\ub978 \ud558\ub098\ub294 \uadf8\ub807\uac8c \uc124\uacc4\ud55c \uc758\ub3c4\uc785\ub2c8\ub2e4.<\/p>\n<p>\uae30\uc220\uc801 \uad6c\uc870\uc5d0 \ub300\ud574\uc11c\ub294 \uc774\ubbf8 \uc5b4\ub290 \uc815\ub3c4 \ub2f5\uc740 \ub098\uc628 \uac83 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub0b4\ubd80 \ud074\ub798\uc2a4\uacfc \uc678\uacfd \ud074\ub798\uc2a4\uc758 \uba64\ubc84 \ud544\ub4dc\uc640 \uc9c0\uc5ed \ubcc0\uc218\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\ub3c4\ub85d \uc790\ubc14\uac00 \ub0b4\ubd80\uc5d0\uc11c \ucc98\ub9ac\ud558\ub294 \ubc29\uc2dd\ub97c \ubcf4\uba74, \uc9c0\uc5ed \ud074\ub798\uc2a4\ub098 \ubb34\uba85 \ud074\ub798\uc2a4\uc758 \uac1d\uccb4\uac00 \uc0dd\uc131\ub418\ub294 \uc2dc\uc810\uc5d0 \uc9c0\uc5ed \ubcc0\uc218\ub098 \uc778\uc790\uac12\uc774 \uc0dd\uc131\ub418\ub294 \uac1d\uccb4 \ub0b4\ubd80\uc5d0 \ubcf5\uc0ac\ub429\ub2c8\ub2e4. \uacb0\uad6d, \uc0c8\ub85c \uc0dd\uc131\ub418\ub294 \uac1d\uccb4 \ub0b4\ubd80\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \ubcc0\uc218\uc640\u00a0 \uadf8 \uac1d\uccb4\ub97c \uc0dd\uc131\ud55c \uba54\uc11c\ub4dc\uc5d0\uc11c \uc0ac\uc6a9\ud558\ub294 \ubcc0\uc218\ub294 \uc774\ub984\ub9cc \uac19\uc744 \ubfd0 \ubcf4\uad00\ub418\ub294 \uc704\uce58\uac00 \ubcc4\uac1c\uc778, \uc804\ud600 \ub2e4\ub978 \ubcc0\uc218\uc785\ub2c8\ub2e4. \ud55c\ucabd\uc5d0\uc11c \uac12\uc744 \ubc14\uafbc\ub2e4\uace0 \ub2e4\ub978 \ucabd \uac12\uc774 \ub369\ub2ec\uc544 \ubc14\ub00c\uac70\ub098 \ud558\ub294 \uc77c\uc740 \uc77c\uc5b4\ub098\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4(\uc77c\uc5b4 \ub0a0 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4). \ubc18\uba74\uc5d0 \ubaa8\ub4e0 \ub0b4\ubd80 \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4 \ub0b4\ubd80\uc5d0 \uc800\uc7a5\ub418\ub294 \uc678\uacfd \uac1d\uccb4\uc758 \ucc38\uc870\ub294 \ud799 \uc0c1\uc5d0 \uc800\uc7a5\ub41c \uac1d\uccb4\uc5d0 \ub300\ud55c \ucc38\uc870\uac12\uc774\ubbc0\ub85c \uc678\uacfd \uac1d\uccb4\uc758 \uc790\uae30 \ucc38\uc870(this \ud0a4\uc6cc\ub4dc)\uc640 \ub3d9\uc77c\ud55c \uac12\uc785\ub2c8\ub2e4. \ub530\ub77c\uc11c \ub0b4\ubd80 \ud074\ub798\uc2a4\uc5d0\uc11c \ubcc0\uacbd\ud558\uba74 \uc678\uacfd \ud074\ub798\uc2a4\uc5d0\uc11c \ubcc0\uacbd\ub41c \uac12\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ube44\ub85d \ub0b4\ubd80\uc801\uc73c\ub85c\ub294 \ub2e4\ub978 \uacf5\uac04\uc5d0 \uc800\uc7a5\ub418\ub294 \ub2e4\ub978 \ubcc0\uc218\uc774\uc9c0\ub9cc, \uc790\ubc14\ub97c \uc124\uacc4\ud558\uc2e0 \ubd84\uc740 \ud504\ub85c\uadf8\ub798\uba38\uc5d0\uac8c \uac19\uc740 \ubcc0\uc218\ub97c \uc0ac\uc6a9\ud55c\ub2e4\ub294 \uc758\ubbf8\ub97c \uc81c\uacf5\ud558\uace0 \uc2f6\uc5c8\ub358 \uac83 \uac19\uc2b5\ub2c8\ub2e4. \uacb0\uad6d final\ub85c \uc81c\uc57d\uc744 \uc8fc\uc5b4 \uacc4\uc18d \ub3d9\uc77c\ud55c \uac12\uc744 \uac16\ub3c4\ub85d \ud574\uc11c \uac19\uc740 \ubcc0\uc218\ub77c\uace0 \uc0dd\uac01\ud558\ub3c4\ub85d \ud55c \uac83\uc774\uc9c0\uc694. \ubd88\ubcc0\uc73c\ub85c \uac12\uc744 \uace0\uc815\ud558\uc9c0 \uc54a\uc558\ub2e4\uba74 \ud55c \ucabd\uc5d0\uc11c \ubcc0\uacbd\ud55c \uac12\uc774 \ub2e4\ub978 \ucabd\uc5d0 \ubc18\uc601\ub418\uc9c0 \uc54a\uc544 \ud63c\ub780\uc5d0 \ube60\uc9c0\ub294 \uc77c\uc774 \uc0dd\uacbc\uc744 \uac81\ub2c8\ub2e4.<\/p>\n<p>\uadf8\ub7fc \uc774\ub9ac \uc124\uacc4\ud55c \uc758\ub3c4\ub294 \ubb58\uae4c\uc694?<\/p>\n<p>\uc194\uc9c1\ud788 \uc804 \ubaa8\ub985\ub2c8\ub2e4(\ubb50\ub0d0! \uc774\uc81c\uc640\uc11c!). \uc774\uc640 \uad00\ub828\ud574\uc11c \uc9c1\uc811 \uc790\ubc14 \ucc3d\uc870\uc790\uc758 \uc598\uae30\ub97c \ub4e4\uc5b4 \ubcf4\uc9c0\ub3c4 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \uc790\ubc14 \uc5b8\uc5b4 \uaddc\uc57d\uc9d1\ub3c4 final\ub85c \uac12\uc744 \uace0\uc815\ud574\uc57c \ud55c\ub2e4\uace0\ub9cc \ud558\uace0 \uc774\uc720\ub294 \uc124\uba85\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uba87\uac00\uc9c0 \ucd94\ub860\uc740 \ud574 \ubcfc \uc218 \uc788\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud558\ub098\ub294 \uc758\ubbf8\ub860\uc73c\ub85c \ubd24\uc744 \ub54c, \uc790\ubc14\uac00 \uba40\ud2f0\uc4f0\ub808\ub4dc\ub97c \uc7a5\uc810\uc73c\ub85c \ub0b4\uc138\uc6b4 \uc774\uc0c1, \uac1d\uccb4\uc758 \uba64\ubc84 \ud544\ub4dc \uac12\uc774 \ub2e4\ub978 \uc5b4\ub5a4 \uc774\uc720\ub85c \ubcc0\ud558\ub294 \uac8c \uc5b4\uc0c9\ud558\uc9c0 \uc54a\uc9c0\ub9cc, \uc9c0\uc5ed \ubcc0\uc218\ub098 \ub9e4\uac1c\ubcc0\uc218\uac00 \ubcc4\ub2e4\ub978 \ub300\uc785\ubb38\uc774 \uc5c6\uc5c8\ub294\ub370\ub3c4 \uc784\uc758\ub85c \uac12\uc774 \ubc14\ub010\ub2e4\uba74 \ubb34\ucc99 \uc0dd\uacbd\ud558\uac8c \uc5ec\uae38 \uac83\uc785\ub2c8\ub2e4. \uc9c0\uc5ed \ubcc0\uc218\ub098 \ub9e4\uac1c\ubcc0\uc218\ub294 \uc4f0\ub808\ub4dc \ub9c8\ub2e4 \ub3c5\ub9bd\ub41c \uc2a4\ud14d \ud504\ub808\uc784\uc5d0 \uc800\uc7a5\ub418\uae30 \ub54c\ubb38\uc5d0 \uc4f0\ub808\ub4dc\uc5d0 \uc548\uc804\ud558\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \uc774\ub7f0 \uc758\ubbf8\ub860\uc744 \uc720\uc9c0\ud558\ub824\uba74 \ubcc4\ub3c4 \uc4f0\ub808\ub4dc\uc5d0\uc11c \ub3d9\uc791\ud560 \uc218\ub3c4 \uc788\ub294 \uc9c0\uc5ed \ud074\ub798\uc2a4\ub098 \ubb34\uba85 \ud074\ub798\uc2a4\uac00 \uc9c0\uc5ed \ubcc0\uc218\ub098 \ub9e4\uac1c \ubcc0\uc218 \uac12\uc744 \uc218\uc815\ud560 \uc218 \uc5c6\ub3c4\ub85d \ub9c9\uc544\uc57c \ud558\uc9c0 \uc54a\uc558\ub098 \uc2f6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub610 \ub2e4\ub978 \ud558\ub098\ub294, \ubcc0\uc218\ub97c \ud3ec\ud68d\ud558\ub294 \uc5b8\uc5b4\uc801 \uc7a5\uce58(\ud074\ub85c\uc800)\ub97c \ud568\uc218\ud615 \ud504\ub85c\uadf8\ub798\ubc0d \uc5b8\uc5b4\uc5d0\uc11c \ub9ce\uc774 \uc0ac\uc6a9\ud558\ub294\ub370, \ud568\uc218\ud615 \uc5b8\uc5b4\uc5d0\uc11c\ub294 \uae30\ubcf8\uc73c\ub85c \ubaa8\ub4e0 \ubcc0\uc218\uac00 \ubd88\ubcc0\uc774\ubbc0\ub85c final\ub85c \uac12\uc744 \uace0\uc815\ud558\ub294 \uac83\uc774 \uc624\ud788\ub824 \uc790\uc5f0\uc2a4\ub7ec\uc6e0\uc744 \uac81\ub2c8\ub2e4. \uc790\ubc14\ub97c \uc124\uacc4\ud558\uba74\uc11c \ubcc0\uc218 \ud3ec\ud68d\uc744 \uc801\uc6a9\ud558\ub824\uace0 \ud588\uc744 \ub54c \ud568\uc218\ud615 \uc5b8\uc5b4\uc758 \uac1c\ub150\uc744 \uadf8\ub300\ub85c \ub3c4\uc785\ud560 \uc0dd\uac01\uc740 \uc5c6\uc5c8\uaca0\uc9c0\ub9cc \ubd88\ubcc0\uc73c\ub85c \ub9cc\ub4e4\ub3c4\ub85d \uacb0\uc815\ud558\ub294\ub370 \uc2ec\ub9ac\uc801\uc778 \uc9c0\uc9c0 \uc694\uc778\uc740 \ub418\uc9c0 \uc54a\uc558\uc744\uae4c \uc2f6\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong> \uadf8\ub7fc \uc815\ub9d0 \ubabb \ubc14\uafb8\ub294 \uac74\uac00?<\/strong><\/p>\n<p>\uadf8\ub7fc \uc774 \ubaa8\ub4e0 \uc0c1\ud669\uc744 \uc774\ud574\ud558\uace0\ub3c4, \uc9c0\uc5ed \ud074\ub798\uc2a4\ub098 \ubb34\uba85 \ud074\ub798\uc2a4\uc5d0\uc11c \ubcc0\uacbd\ud55c \uc9c0\uc5ed \ubcc0\uc218\uc758 \uac12\uc744 \uc0ac\uc6a9\ud558\uace0 \uc2f6\ub2e4\uba74 \uc5b4\ucc0c\ud574\uc57c \ud560\uae4c\uc694?<\/p>\n<p>\uc774\uc5d0 \ub300\ud574\uc11c\ub294 &#8220;<a href=\"http:\/\/eclipsesource.com\/blogs\/2013\/08\/19\/mutable-variable-capture-in-anonymous-java-classes\/\">Mutable variable capture in anonymous Java classes<\/a>&#8220;\ub97c \uc77d\uc5b4 \ubcf4\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4. \ud55c\ub9c8\ub514\ub85c \uae30\ubcf8 \ud0c0\uc785\uc758 \uac12\uacfc \uac1d\uccb4 \ucc38\uc870\ub294 \ubd88\ubcc0\uc774\ub354\ub77c\ub3c4 \ucc38\uc870\ud558\ub294 \uac1d\uccb4 \uc548\uc758 \uba64\ubc84 \ud544\ub4dc\ub294 \uc218\uc815\ud560 \uc218 \uc788\uc73c\ub2c8 \ubcc0\uacbd\ud558\uace0 \uc2f6\uc740 \uac12\uc744 \ub2f4\ub294 \uac04\ub2e8\ud55c \uac1d\uccb4\ub97c \ub9cc\ub4e4\uc5b4\uc11c \uc774\ub97c \uacf5\uc720\ud558\uba74 \ub41c\ub2e4\ub294 \ub0b4\uc6a9\uc785\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc694\uc998 \uc790\ubc14 8\uc758 \ub78c\ub2e4\uc2dd \ub54c\ubb38\uc778\uc9c0 \uc9c0\uc5ed \ud074\ub798\uc2a4(Local Class), \ubb34\uba85 \ud074\ub798\uc2a4(Anonymous Class), \ub78c\ub2e4\uc2dd(Lambda Expression)\uc5d0\uc11c \ud3ec\ud68d\ub41c \uc9c0\uc5ed \ubcc0\uc218\uac00 final\ub85c \uba85\uc2dc\ub418\uac70\ub098 &#8220;\uc0ac\uc2e4\uc0c1 final(\uc790\ubc14 8\uc5d0\uc11c \uba85\uc2dc\uc801\uc73c\ub85c final \ud0a4\uc6cc\ub4dc\uac00 \ubd99\uc9c0\ub294 \uc54a\uc558\uc9c0\ub9cc \ub300\ub300\uc785\ubb38\uc73c\ub85c \uac12\uc744 \ubc14\uafb8\uc9c0 \uc54a\uc544 \uc0ac\uc2e4\uc0c1 \uac12\uc774 \ubc14\ub00c\uc9c0 \uc54a\ub294 \ubcc0\uc218\ub97c \uac00\ub9ac\ud0a4\ub294 \uc6a9\uc5b4)&#8221;\uc774\uc5b4\uc57c \ud558\ub294 \uc774\uc720\ub97c \ub450\uace0 \uc628\ub77c\uc778\uc774\ub098 \uc624\ud504\ub77c\uc778\uc5d0\uc11c \ud1a0\ub860\ud558\ub294 \uc77c\uc774 \ub9ce\uc544\uc84c\uc2b5\ub2c8\ub2e4. \uc800\ud76c \ud300\uc5d0\uc11c\ub3c4 \uc9c0\ub09c \uc8fc\uc5d0 \uc774\ub97c \uac00\uc9c0\uace0 \uc758\uacac\uc744 \uc8fc\uace0 \ubc1b\uc558\uc2b5\ub2c8\ub2e4. \uc774 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[3],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p4FJ1B-O","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=\/wp\/v2\/posts\/50"}],"collection":[{"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=50"}],"version-history":[{"count":19,"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=\/wp\/v2\/posts\/50\/revisions"}],"predecessor-version":[{"id":70,"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=\/wp\/v2\/posts\/50\/revisions\/70"}],"wp:attachment":[{"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=50"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=50"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.fupfin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=50"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}