锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品国产99国产精品亚洲,久久99亚洲网美利坚合众国,亚洲午夜未满十八勿入http://www.tkk7.com/shinzey/搴鎬漢涓嶅繀鑷壈錛屾櫤鑰呬綍闇鍗冭檻錛?/description>zh-cnSun, 11 May 2025 01:54:23 GMTSun, 11 May 2025 01:54:23 GMT60Java EE 7 鏂板姛鑳藉墠鐬?/title><link>http://www.tkk7.com/shinzey/archive/2012/02/13/369874.html</link><dc:creator>铚灞卞厗瀛ㄩ緲</dc:creator><author>铚灞卞厗瀛ㄩ緲</author><pubDate>Mon, 13 Feb 2012 14:23:00 GMT</pubDate><guid>http://www.tkk7.com/shinzey/archive/2012/02/13/369874.html</guid><wfw:comment>http://www.tkk7.com/shinzey/comments/369874.html</wfw:comment><comments>http://www.tkk7.com/shinzey/archive/2012/02/13/369874.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/shinzey/comments/commentRss/369874.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/shinzey/services/trackbacks/369874.html</trackback:ping><description><![CDATA[<div id="ks2iyiu" class="article"> <p>21 涓栫邯鍒濓紝Spring 妗嗘灦鐨勮癁鐢熷拰宕涜搗璁╂矇閲嶈岃厫鏈界殑 J2EE 閬埌浜嗗綋澶存鍠濓紝闅忓悗澶ф壒寮鍙戜漢鍛樿漿鎶?Spring 闃佃惀錛屽懠鍚擱棿灝辮 J2EE 闃佃惀澶т激鍏冩皵銆傜劧鑰岃繖縐嶅懡鎮竴綰跨殑鍗辨満騫舵病鏈夐犳垚姣佺伃鎬х殑鎵撳嚮錛屽挨鍏舵槸瀵逛簬 Java 榪欑鎻愬″紑鏀劇殑騫沖彴鑰岃█錛屽彇闀胯ˉ鐭紝浜掔浉淇冭繘鎵嶆槸姝i亾銆備簬鏄紝JCP 濮斿憳浼氱棝瀹氭濈棝錛屽湪 2006 騫存帹鍑?Java EE 5 瑙勮寖錛屼富瑕佹槸瀵?EJB 鐨勫紑鍙戣繘琛屼簡鏋佸ぇ騫呭害鐨勭畝鍖栥?008 騫村彂甯冪殑 Java EE 6 寮曞叆浜?CDI銆丅V銆丣AX-RS 絳変竴緋誨垪鏂板姛鑳斤紝騫朵笖浠ラ厤緗枃浠訛紙profile錛夌殑鏂瑰紡璁?Java EE 鍚戣交閲忕駭榪堣繘浜嗕竴姝ャ傜壒鍒湁瓚g殑鏄紝Spring 妗嗘灦涔熷紑濮嬫彁渚涘鏌愪簺 Java EE 娉ㄨВ鐨勬敮鎸侊紝鏄惁鏍囧織鐫涓ゅぇ闃佃惀寮濮嬪悎嫻侊紵Java EE 7 棰勫畾浜庝粖騫翠笅鍗婂勾鍙戝竷錛岀洰鏍囨槸鏀寔浜戣綆椼傛渶榪戝嚑騫存潵錛屼簯璁$畻涓鐩磋鐐掍綔錛屽嵈浠庢潵娌℃湁涓涓噯紜殑瀹氫箟鍜岃鑼冿紝甯屾湜 Java EE 7 鑳藉鍦?Java 鐣屾壄杞繖縐嶅按灝殑灞闈€?/p> <p>涓嬮潰寮濮嬭緇嗗垪涓?Java EE 7 鐨勬柊鍔熻兘鍓嶇灮錛屾暟鎹潵婧愪簬銆奐ava Magazine 2012-01/02銆嬩腑鐨勩奀loud/Java EE: Looking Ahead to Java EE 7銆嬩竴鏂囥侸ava EE 7 鏄互鈥滄棩鏈熼┍鍔ㄢ濈殑鏂瑰紡寮鍙戠殑錛屼篃灝辨槸璇達紝鍦ㄨ鍒掓棩鏈熷埌杈懼墠娌℃湁瀹屾垚鐨勫姛鑳介兘灝嗚鎺ㄨ繜鍒?Java EE 8銆?/p> <h1>Java EE 7錛圝SR-342錛?/h1> <ul> <li>涓婚錛氳搴旂敤紼嬪簭鑳藉鍦ㄧ鏈夋垨鍏叡浜戜笂瀹規槗鍦拌繍琛屻?/li> <li>璇ュ鉤鍙板皢瀹氫箟涓涓簲鐢ㄧ▼搴忓厓鏁版嵁鎻忚堪絎︼紝浠ユ弿榪?PaaS 鎵ц鐜錛堜緥濡傚縐熸埛銆佽祫婧愬叡浜佹湇鍔¤川閲忥紝浠ュ強搴旂敤紼嬪簭闂寸殑渚濊禆錛夈?/li> <li>鏀寔 HTML5銆乄ebSocket銆丣SON 絳夋柊鏍囧噯錛屽茍涓哄畠浠竴涓鎻愪緵 API銆?/li> <li>娑堥櫎鍙楃 Bean銆丒JB銆丼ervlet銆丣SF銆丆DI 鍜?JAX-RS 涔嬮棿涓嶄竴鑷寸殑鍦版柟銆?/li> <li>鍙兘鍦?Web 閰嶇疆鏂囦歡涓寘鍚?JAX-RS 2.0 鍜?JMS 2.0 API 淇鐗堛?/li> <li>鏇存柊涓浜涚幇鏈夌殑鎶鏈紝鍙兘寮曞叆鐢ㄤ簬 Java EE 鐨勫茍鍙戝伐鍏鳳紙JSR-236錛夊拰 JCache錛圝SR-107錛夈?/li> </ul> <h1>Java Persistence 2.1錛圝SR-338錛?/h1> <ul> <li>鏀寔澶氱鎴楓?/li> <li>鏀寔瀛樺偍榪囩▼鍜屽巶鍟嗗嚱鏁般?/li> <li>鐢ㄨ鍒欙紙Criteria錛夎繘琛屾洿鏂板拰鍒犻櫎銆?/li> <li>鏀寔鏁版嵁搴撳ぇ綰詫紙Scheme錛夌殑鐢熸垚銆?/li> <li>鎸佷箙鍖栦笂涓嬫枃鐨勫悓姝ャ?/li> <li>渚﹀惉鍣ㄤ腑鐨?CDI 娉ㄥ叆銆?/li> </ul> <h1>JAX-RS 2.0: The Java API for RESTful Web Services錛圝SR-339錛?/h1> <ul> <li>瀹㈡埛绔?API鈥斺斿簳灞備嬌鐢ㄦ瀯寤鴻呮ā寮忥紝鍙兘鎻愪緵涓婂眰灝佽銆?/li> <li>瓚呭獟浣撯斺旇交鏉懼垱寤哄拰澶勭悊鍏寵仈浜嗚祫婧愮殑閾炬帴銆?/li> <li>浣跨敤 Bean 楠岃瘉妗嗘灦鏉ラ獙璇佽〃鍗曟垨鏌ヨ鍙傛暟銆?/li> <li>涓?<code>@Inject</code> 鏇寸揣瀵嗛泦鎴愩?/li> <li>鏈嶅姟绔殑寮傛璇鋒眰澶勭悊銆?/li> <li>浣跨敤鈥渜s鈥濊繘琛屾湇鍔$鐨勫唴瀹瑰崗鍟嗐?/li> </ul> <h1>Java Servlet 3.1錛圝SR-340錛?/h1> <ul> <li>涓?Web 搴旂敤紼嬪簭浼樺寲 PaaS 妯″瀷銆?/li> <li>鐢ㄤ簬瀹夊叏銆佷細璇濆拰璧勬簮鐨勫縐熸埛銆?/li> <li>鍩轟簬 NIO2 鐨勫紓姝?I/O銆?/li> <li>綆鍖栫殑寮傛 Servlet銆?/li> <li>鍒╃敤 Java EE 騫跺彂宸ュ叿銆?/li> <li>鏀寔 WebSocket銆?/li> </ul> <h1>Expression Language 3.0錛圝SR-341錛?/h1> <ul> <li>灝?<code>ELContext</code> 鍒嗙涓鴻В鏋愬拰姹傚間笂涓嬫枃銆?/li> <li>鍙畾鍒剁殑 EL 寮鴻揩瑙勫垯銆?/li> <li>鍦?EL 琛ㄨ揪寮忎腑鐩存帴寮曠敤闈欐佹柟娉曞拰鎴愬憳銆?/li> <li>娣誨姞榪愮畻絎︼紝渚嬪絳変簬銆佸瓧絎︿覆榪炴帴鍜屽彇澶у皬銆?/li> <li>涓?CDI 闆嗘垚錛屼緥濡傚湪琛ㄨ揪寮忔眰鍊煎墠/涓?鍚庣敓鎴愪簨浠躲?/li> </ul> <h1>Java Message Service 2.0錛圝SR-343錛?/h1> <ul> <li>綆鍖栧紑鍙戔斺旀敼鍙?JMS 緙栫▼妯″瀷錛岃搴旂敤紼嬪簭寮鍙戝彉寰楁洿鍔犵畝鍗曞鏄撱?/li> <li>娓呴櫎/婢勬竻鐜版湁瑙勮寖涓殑妯$硦涔嬪銆?/li> <li>涓?CDI 闆嗘垚銆?/li> <li>婢勬竻 JMS 鍜屽叾浠?Java EE 瑙勮寖涔嬮棿鐨勫叧緋匯?/li> <li>鏂扮殑寮哄埗鎬?API鍏佽浠諱綍 JMS 鎻愪緵鑰呰兘涓庝換浣?Java EE 瀹瑰櫒闆嗘垚銆?/li> <li>鏉ヨ嚜騫沖彴鐨勫縐熸埛鍜屽叾浠栦簯鐩稿叧鐨勫姛鑳姐?/li> </ul> <h1>JavaServer Faces 2.2錛圝SR-344錛?/h1> <ul> <li>綆鍖栧紑鍙戔斺斾嬌閰嶇疆閫夐」鍔ㄦ佸寲錛屼嬌澶嶅悎緇勪歡涓殑 <code>cc:interface</code> 鍙夛紝Facelet 鏍囪搴撶殑閫熻 URL錛屼笌 CDI 闆嗘垚錛孞SF 緇勪歡鐨?OSGi 鏀寔銆?/li> <li>鏀寔 Portlet 2.0 妗ワ紙JSR-329錛夌殑瀹炵幇銆?/li> <li>鏀寔 HTML5 鐨勫姛鑳斤紝渚嬪 HTML5 琛ㄥ崟銆佸厓鏁版嵁銆佸ご閮ㄥ拰鍖烘鍐呭妯″瀷銆?/li> <li>嫻佺鐞嗭紝欏甸潰瀵艱埅浜嬩歡鐨勪睛鍚櫒錛屼互鍙?<code>fileUpload</code> 鍜?<code>BackButton</code> 絳夋柊緇勪歡銆?/li> </ul> <h1>Enterprise JavaBeans 3.2錛圝SR-345錛?/h1> <ul> <li>澧炲己 EJB 鏋舵瀯浠ユ敮鎸?PaaS錛屼緥濡傚縐熸埛銆?/li> <li>瀵瑰湪 EJB 澶栦嬌鐢ㄥ鍣ㄧ鐞嗙殑浜嬪姟榪涜宸ュ巶鍖栥?/li> <li>鏇磋繘涓姝ヤ嬌鐢ㄦ敞瑙c?/li> <li>涓庡鉤鍙頒腑鐨勫叾浠栬鑼冨榻愬拰闆嗘垚銆?/li> </ul> <h1>Contexts and Dependency Injection 1.1錛圝SR-346錛?/h1> <ul> <li>鎷︽埅鍣ㄧ殑鍏ㄥ眬鎺掑簭鍜岀鐞嗗唴寤轟笂涓嬫枃鐨勮楗板櫒 API銆?/li> <li>鍙湪 Java EE 瀹瑰櫒澶栧惎鍔ㄧ殑宓屽叆寮忔ā寮忋?/li> <li>澹版槑寮忓湴鎺у埗褰掓。涓殑鍝簺鍖呭拰 Bean 灝嗚鎵弿銆?/li> <li>娉ㄥ叆鏃ュ織涔嬬被鐨勯潤鎬佹垚鍛樸?/li> <li>灝?Servlet 浜嬩歡浣滀負 CDI 浜嬩歡鍙戦併?/li> </ul> <h1>Bean Validation 1.1錛圝SR-349錛?/h1> <ul> <li>涓庡叾浠?Java EE 瑙勮寖闆嗘垚銆?/li> <li>JAX-RS錛氬湪 HTTP 璋冪敤涓獙璇佸弬鏁板拰榪斿洖鍊箋?/li> <li>JAXB錛氬皢綰︽潫鏉′歡杞崲鍒?XML 妯″紡鎻忚堪絎︿腑銆?/li> <li>鏂規硶綰у埆鐨勯獙璇併?/li> <li>鍦ㄧ粍闆嗗悎涓婂簲鐢ㄧ害鏉熸潯浠躲?/li> <li>鎵╁睍妯″瀷浠ユ敮鎸佲滀笌鈥濆拰鈥滄垨鈥濋鏍肩殑緇勫悎銆?/li> </ul> <h1>JCache: Java Temporary Caching API錛圝SR-107錛?/h1> <ul> <li>鍦ㄥ唴瀛樹腑鏆傚瓨 Java 瀵硅薄鐨?API 鍜岃涔夛紝鍖呮嫭瀵硅薄鐨勫垱寤恒佸叡浜闂佺紦瀛樻睜銆佸け鏁堬紝浠ュ強璺?JVM 鐨勪竴鑷存с?/li> </ul> <h1>Java State Management錛圝SR-350錛?/h1> <ul> <li>搴旂敤紼嬪簭鍜?Java EE 瀹瑰櫒鍙嬌鐢ㄨ API 灝嗙姸鎬佺鐞嗙殑浠誨姟浜ょ粰鍏鋒湁涓嶅悓 QoS 鐗瑰緛鐨勭涓夋柟鎻愪緵鑰呫?/li> <li>鍩轟簬 Java SE 鐨勮皟鐢ㄨ呭彲閫氳繃鏌ヨ鐘舵佹彁渚涜呮潵璁塊棶鐘舵佹暟鎹?/li> <li>鍙坊鍔犲叿鏈変笉鍚?QoS 鐨勬彁渚涜咃紝API 璋冪敤鑰呰兘澶熸寜鑷繁鐨勮鍒欒繘琛屾煡璇€?/li> </ul> <h1>Batch Applications for the Java Platform錛圝SR-352錛?/h1> <ul> <li>鐢ㄤ簬鎵瑰鐞嗗簲鐢ㄧ▼搴忕殑緙栫▼妯″瀷錛屼互鍙婄敤浜庤皟搴﹀拰鎵ц宸ヤ綔鐨勮繍琛屾椂銆?/li> <li>涓烘爣鍑嗙紪紼嬫ā鍨嬪畾涔夋壒澶勭悊宸ヤ綔銆佹壒澶勭悊宸ヤ綔姝ラ銆佹壒澶勭悊搴旂敤紼嬪簭銆佹壒澶勭悊鎵ц鍣ㄥ拰鎵瑰鐞嗗伐浣滅鐞嗗櫒銆?/li> </ul> <h1>Concurrency Utilities for Java EE錛圝SR-236錛?/h1> <ul> <li>鎻愪緵涓涓暣媧併佺畝鍗曚笖鐙珛鐨?API錛屼嬌鍏惰兘鐢ㄤ簬浠諱綍 Java EE 瀹瑰櫒涓?/li> </ul> <h1>Java API for JSON Processing錛圝SR-353錛?/h1> <ul> <li>澶勭悊 JSON 鐨?Java API銆?/li> </ul> </div><img src ="http://www.tkk7.com/shinzey/aggbug/369874.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/shinzey/" target="_blank">铚灞卞厗瀛ㄩ緲</a> 2012-02-13 22:23 <a href="http://www.tkk7.com/shinzey/archive/2012/02/13/369874.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>闈炰富嫻佸茍鍙戝伐鍏蜂箣 ForkJoinPoolhttp://www.tkk7.com/shinzey/archive/2012/02/09/368312.html铚灞卞厗瀛ㄩ緲铚灞卞厗瀛ㄩ緲Thu, 09 Feb 2012 02:40:00 GMThttp://www.tkk7.com/shinzey/archive/2012/02/09/368312.htmlhttp://www.tkk7.com/shinzey/comments/368312.htmlhttp://www.tkk7.com/shinzey/archive/2012/02/09/368312.html#Feedback2http://www.tkk7.com/shinzey/comments/commentRss/368312.htmlhttp://www.tkk7.com/shinzey/services/trackbacks/368312.html

ForkJoinPool 鏄?Java SE 7 鏂板姛鑳解滃垎鍙?緇撳悎妗嗘灦鈥濈殑鏍稿績綾伙紝鐜板湪鍙兘涔忎漢闂觸錛屼絾鎴戣寰楀畠榪熸棭浼氭垚涓轟富嫻併傚垎鍙?緇撳悎妗嗘灦鏄竴涓瘮杈冪壒孌婄殑綰跨▼姹犳鏋訛紝涓撶敤浜庨渶瑕佸皢涓涓換鍔′笉鏂垎瑙f垚瀛愪換鍔★紙鍒嗗弶錛夛紝鍐嶄笉鏂繘琛屾眹鎬誨緱鍒版渶緇堢粨鏋滐紙緇撳悎錛夌殑璁$畻榪囩▼銆傛瘮璧蜂紶緇熺殑綰跨▼姹犵被 ThreadPoolExecutor錛?code>ForkJoinPool 瀹炵幇浜嗗伐浣滅獌鍙栫畻娉曪紝浣垮緱絀洪棽綰跨▼鑳藉涓誨姩鍒嗘媴浠庡埆鐨勭嚎紼嬪垎瑙e嚭鏉ョ殑瀛愪換鍔★紝浠庤岃鎵鏈夌殑綰跨▼閮藉敖鍙兘澶勪簬楗辨弧鐨勫伐浣滅姸鎬侊紝鎻愰珮鎵ц鏁堢巼銆?/p>

ForkJoinPool 鎻愪緵浜嗕笁綾繪柟娉曟潵璋冨害瀛愪換鍔★細

execute 緋誨垪
寮傛鎵ц鎸囧畾鐨勪換鍔°?/dd>
invoke 鍜?invokeAll
鎵ц鎸囧畾鐨勪換鍔★紝絳夊緟瀹屾垚錛岃繑鍥炵粨鏋溿?/dd>
submit 緋誨垪
寮傛鎵ц鎸囧畾鐨勪換鍔″茍绔嬪嵆榪斿洖涓涓?Future 瀵硅薄銆?/dd>

瀛愪換鍔$敱 ForkJoinTask 鐨勫疄渚嬫潵浠h〃銆傚畠鏄竴涓娊璞$被錛孞DK 涓烘垜浠彁渚涗簡涓や釜瀹炵幇錛?code>RecursiveTask 鍜?RecursiveAction錛屽垎鍒敤浜庨渶瑕佸拰涓嶉渶瑕佽繑鍥炶綆楃粨鏋滅殑瀛愪換鍔°?code>ForkJoinTask 鎻愪緵浜嗕笁涓潤鎬佺殑 invokeAll 鏂規硶鏉ヨ皟搴﹀瓙浠誨姟錛屾敞鎰忓彧鑳藉湪 ForkJoinPool 鎵ц璁$畻鐨勮繃紼嬩腑璋冪敤瀹冧滑銆?/p>

ForkJoinPool 鍜?ForkJoinTask 榪樻彁渚涗簡寰堝璁╀漢鐪艱姳緙貢鐨勫叕鍏辨柟娉曪紝鍏跺疄瀹冧滑澶у鏁伴兘鏄叾鍐呴儴瀹炵幇鍘昏皟鐢ㄧ殑錛屽浜庡簲鐢ㄥ紑鍙戜漢鍛樻潵璇存剰涔変笉澶с?/p>

涓嬮潰浠ョ粺璁?D 鐩樻枃浠朵釜鏁頒負渚嬨傝繖瀹為檯涓婃槸瀵逛竴涓枃浠舵爲鐨勯亶鍘嗭紝鎴戜滑闇瑕侀掑綊鍦扮粺璁℃瘡涓洰褰曚笅鐨勬枃浠舵暟閲忥紝鏈鍚庢眹鎬伙紝闈炲父閫傚悎鐢ㄥ垎鍙?緇撳悎妗嗘灦鏉ュ鐞嗭細

// 澶勭悊鍗曚釜鐩綍鐨勪換鍔?
public class CountingTask extends RecursiveTask<Integer> {
    private Path dir;

    public CountingTask(Path dir) {
        this.dir = dir;
    }

    @Override
    protected Integer compute() {
        int count = 0;
        List<CountingTask> subTasks = new ArrayList<>();

        // 璇誨彇鐩綍 dir 鐨勫瓙璺緞銆?
        try (DirectoryStream<Path> ds = Files.newDirectoryStream(dir)) {
            for (Path subPath : ds) {
                if (Files.isDirectory(subPath, LinkOption.NOFOLLOW_LINKS)) {
                    // 瀵規瘡涓瓙鐩綍閮芥柊寤轟竴涓瓙浠誨姟銆?
                    subTasks.add(new CountingTask(subPath));
                } else {
                    // 閬囧埌鏂囦歡錛屽垯璁℃暟鍣ㄥ鍔?1銆?
                    count++;
                }
            }

            if (!subTasks.isEmpty()) {
                // 鍦ㄥ綋鍓嶇殑 ForkJoinPool 涓婅皟搴︽墍鏈夌殑瀛愪換鍔°?
                for (CountingTask subTask : invokeAll(subTasks)) {
                    count += subTask.join();
                }
            }
        } catch (IOException ex) {
            return 0;
        }
        return count;
    }
}

// 鐢ㄤ竴涓?ForkJoinPool 瀹炰緥璋冨害鈥滄諱換鍔♀濓紝鐒跺悗鏁鏈熷緟緇撴灉鈥︹?
Integer count = new ForkJoinPool().invoke(new CountingTask(Paths.get("D:/")));
    

鍦ㄦ垜鐨勭瑪璁版湰涓婏紝緇忓嬈¤繍琛岃繖孌典唬鐮侊紝鑰楄垂鐨勬椂闂寸ǔ瀹氬湪 600 璞宸﹀彸銆傛櫘閫氱嚎紼嬫睜錛?code>Executors.newCachedThreadPool()錛夎楁椂 1100 姣宸﹀彸錛岃凍瑙佸伐浣滅獌鍙栫殑浼樺娍銆?/p>

緇撴潫鏈枃鍓嶏紝鎴戜滑鏉ュ洿瑙備竴涓渶紲炲鐨勭粨鏋滐細鍗曠嚎紼嬬畻娉曪紙浣跨敤 Files.walkFileTree(...)錛夋瘮榪欎袱涓兘蹇紝騫沖潎鑰楁椂 550 姣錛佽繖璀﹀憡鎴戜滑騫墮潪寮曞叆澶氱嚎紼嬪氨鑳戒紭鍖栨ц兘錛屽茍欏昏鍏堢粡榪囧嬈℃祴璇曟墠鑳戒笅緇撹銆?/p>

]]>
Java 緗戠粶緙栫▼浠庤彍楦熷埌鍙吔 4錛氶潰鍚戞祦鐨勫鎺ュ瓧 I/Ohttp://www.tkk7.com/shinzey/archive/2012/01/19/368751.html铚灞卞厗瀛ㄩ緲铚灞卞厗瀛ㄩ緲Thu, 19 Jan 2012 06:37:00 GMThttp://www.tkk7.com/shinzey/archive/2012/01/19/368751.htmlhttp://www.tkk7.com/shinzey/comments/368751.htmlhttp://www.tkk7.com/shinzey/archive/2012/01/19/368751.html#Feedback1http://www.tkk7.com/shinzey/comments/commentRss/368751.htmlhttp://www.tkk7.com/shinzey/services/trackbacks/368751.html

鍓嶉潰宸茬粡鐪嬪埌錛?code>Socket 綾葷殑 getInputStream() 鍜?getOutStream() 鏂規硶鍒嗗埆鑾峰彇濂楁帴瀛楃殑杈撳叆嫻佸拰杈撳嚭嫻併傝緭鍏ユ祦鐢ㄦ潵璇誨彇榪滅鍙戦佽繃鏉ョ殑鏁版嵁錛岃緭鍑烘祦鍒欑敤鏉ュ悜榪滅鍙戦佹暟鎹?/p>

杈撳叆嫻?/h1>

浣跨敤濂楁帴瀛楃殑杈撳叆嫻佽鍙栨暟鎹椂錛屽綋鍓嶇嚎紼嬩細榪涘叆闃誨鐘舵侊紝鐩村埌濂楁帴瀛楁敹鍒頒竴浜涙暟鎹負姝紙浜﹀嵆濂楁帴瀛楃殑鎺ユ敹緙撳啿鍖烘湁鍙敤鏁版嵁錛夈傝杈撳叆嫻佺殑 available() 鏂規硶鍙槸榪斿洖鎺ユ敹緙撳啿鍖虹殑鍙敤瀛楄妭鏁伴噺錛屼笉鍙兘鐭ラ亾榪滅榪樿鍙戦佸灝戝瓧鑺傘備嬌鐢ㄨ緭鍏ユ祦鐨勬椂鍊欙紝鏈濂藉厛灝嗗畠鍖呰涓轟竴涓?BufferedInputStream錛屽洜涓鴻鍙栨帴鏀剁紦鍐插尯灝嗗鑷?JVM 鍜屽簳灞傜郴緇熶箣闂寸殑鍒囨崲錛屽簲褰撳敖閲忓噺灝戝垏鎹㈡鏁頒互鎻愰珮鎬ц兘銆?code>BufferedInputStream 鐨勭紦鍐插尯澶у皬鏈濂借涓哄鎺ュ瓧鎺ユ敹緙撳啿鍖虹殑澶у皬銆?/p>

濡傛灉鐩存帴璋冪敤杈撳叆嫻佺殑 close() 鏂規硶鏉ュ叧闂畠錛屽垯灝嗗鑷村鎺ュ瓧琚叧闂傚姝わ紝Socket 綾繪彁渚涗簡涓涓?shutdownInput() 鏂規硶鏉ョ鐢ㄨ緭鍏ユ祦銆傝皟鐢ㄨ鏂規硶鍚庯紝姣忔璇繪搷浣滈兘灝嗚繑鍥?EOF錛屾棤娉曞啀璇誨彇榪滅鍙戦佺殑鏁版嵁銆傚榪欎釜 EOF 鐨勬嫻嬶紝涓嶅悓鐨勮緭鍏ユ祦鍖呰浣撶幇鍑轟笉鍚岀殑緇撴灉錛屽彲鑳借鍒?-1 涓瓧鑺傦紝鍙兘璇誨埌鐨勫瓧絎︿覆涓?null錛岃繕鍙兘鏀跺埌涓涓?EOFException 絳夌瓑銆傜鐢ㄨ緭鍏ユ祦鍚庯紝榪滅杈撳嚭嫻佺殑琛屼負鏄鉤鍙扮浉鍏崇殑錛?/p>

  • 鍦?BSD 騫沖彴涓婏紝榪滅鐨勫彂閫佺殑鏁版嵁鑳芥甯告帴鏀訛紝鐒跺悗鐩存帴涓㈠純銆傝繙绔棤娉曠煡閬撴湰绔殑杈撳叆嫻佸凡紱佺敤銆傝繖鍜?JDK 鏂囨。鎻忚堪鐨勮涓轟竴鑷淬?/li>
  • 鍦?WINSOCK 騫沖彴涓婏紝榪滅鍙戦佹暟鎹皢浼氬鑷粹滆繛鎺ヨ閲嶇疆鈥濈殑閿欒銆?/li>
  • 鍦?Linux 騫沖彴涓婏紝榪滅鍙戦佺殑鏁版嵁鑳界戶緇帴鏀訛紝鐩村埌濂楁帴瀛楄緭鍏ョ紦鍐插尯濉弧錛屼箣鍚庤繙绔啀涔熸棤娉曞彂閫佹暟鎹紙鑻ヤ嬌鐢ㄩ樆濉炴ā寮忓垯榪涘叆姝婚攣錛夈?/li>

紱佺敤杈撳叆嫻佽繖縐嶆妧鏈茍涓嶅父鐢ㄣ?/p>

杈撳嚭嫻?/h1>

濂楁帴瀛楃殑杈撳嚭鎿嶄綔瀹為檯涓婁粎浠呭皢鏁版嵁鍐欏埌鍙戦佺紦鍐插尯鍐咃紝褰撳彂閫佺紦鍐插尯濉弧涓斾笂嬈$殑鍙戦佹垚鍔熷悗錛岀敱搴曞眰緋葷粺璐熻矗鍙戦併傚鏋滃彂閫佺紦鍐插尯鐨勫墿浣欑┖闂翠笉澶燂紝褰撳墠綰跨▼灝變細闃誨銆傚拰杈撳叆嫻佺被浼鹼紝鏈濂藉皢杈撳嚭嫻佸寘瑁呬負 BufferedOutputStream銆?/p>

濡傛灉濂楁帴瀛楃殑鍙屽彂閮戒嬌鐢?ObjectInputStream 鍜?ObjectOutputStream 鏉ヨ鍐?Java 瀵硅薄錛屽垯蹇呴』鍏堝垱寤?ObjectOutputStream錛屽洜涓?ObjectInputStream 鍦ㄦ瀯閫犵殑鏃跺欎細璇曞浘璇誨彇瀵硅薄澶撮儴錛屽鏋滃弻鍙戦兘鍏堝垱寤?ObjectInputStream錛屽垯浼氫簰鐩哥瓑寰呭鏂圭殑杈撳嚭錛岄犳垚姝婚攣錛?/p>

// 鍒涘緩鐨勯『搴忎笉鑳介鍊掞紒
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
    

綾諱技浜庤緭鍏ユ祦錛屽叧闂緭鍑烘祦涔熷鑷村叧闂鎺ュ瓧錛屾墍浠?Socket 綾誨悓鏍鋒彁渚涗簡涓涓?shutdownOutput() 鏉ョ鐢ㄨ緭鍑烘祦銆傜鐢ㄨ緭鍑烘祦鍚庯紝宸插啓鍏ュ彂閫佺紦鍐插尯鐨勬暟鎹細姝e父鍙戦侊紝涔嬪悗鐨勪換浣曞啓鎿嶄綔閮戒細瀵艱嚧 IOException錛屼笖榪滅鐨勮緭鍏ユ祦濮嬬粓浼氳鍒?EOF銆傜鐢ㄨ緭鍑烘祦闈炲父鏈夌敤錛屼緥濡傚鎺ュ瓧鐨勫弻鍙戦兘鍦ㄥ彂閫佸畬姣曟暟鎹悗紱佺敤杈撳叆嫻侊紝鐒跺悗鍙屾柟閮戒細鏀跺埌 EOF錛屼粠鑰岀煡閬撴暟鎹凡緇忓叏閮ㄤ氦鎹㈠畬姣曪紝鍙互瀹夊叏鍏抽棴濂楁帴瀛椼傜洿鎺ュ叧闂鎺ュ瓧浼氬悓鏃跺叧闂緭鍏ユ祦鍜岃緭鍑烘祦錛屼笖鏂紑榪炴帴錛岃揪涓嶅埌榪欑鏁堟灉銆?/p>

浣跨敤嫻佺殑闃誨濂楁帴瀛楃殑浼樼己鐐?/h2>

濡傛灉瑕佷嬌鐢ㄦ祦榪涜杈撳叆鍜岃緭鍑猴紝灝卞彧鑳界敤闃誨妯″紡鐨勫鎺ュ瓧銆傝繖閲屾葷粨涓涓嬮樆濉炲鎺ュ瓧鐨勪紭緙虹偣銆傚厛鐪嬬湅浼樼偣錛?/p>

  1. 緙栫▼妯″瀷綆鍗曪紝闈炲父閫傚悎鍒濆鑰呬笂鎵嬨?/li>
  2. 浠ヨ楗板櫒妯″紡璁捐鐨?Java I/O 浣垮緱寮鍙戜漢鍛樺彲浠ヨ交鏉懼湴浠?I/O 嫻佽鍐欎換浣曠被鍨嬬殑鏁版嵁銆?/li>

浣嗗湪鎬ц兘鏂歸潰鏈夎嚧鍛界殑緙虹偣錛?/p>

  1. 鐢變簬鏈嶅姟鍣ㄥ鎺ュ瓧鎺ュ彈榪炴帴錛屼互鍙婂鎺ュ瓧鐨勮鍐欓兘浼氶樆濉烇紝鎬ц兘浣庝笅銆?/li>
  2. 濡傛灉涓嶅 I/O 嫻佹墜鍔ㄨ繘琛岀紦鍐詫紝鍒欏彲鑳介犳垚涓嬈″彧澶勭悊涓涓瓧鑺傦紝鎬ц兘浣庝笅銆?/li>
  3. 鏈嶅姟鍣ㄥ鎺ュ瓧姣忔鍙兘鎺ュ彈涓涓繛鎺ワ紝瀵艱嚧 JVM 鍜屽簳灞傜郴緇熶箣闂撮綣佺殑璋冪敤鍒囨崲錛屾ц兘浣庝笅銆?/li>

涓嬩竴綃囨枃绔犲紑濮嬫帰璁ㄤ嬌鐢ㄥ熀浜?NIO 鐨勫鎺ュ瓧閫氶亾鍜岀紦鍐插尯瀹炵幇浼哥緝鎬ф洿寮虹殑 TCP 濂楁帴瀛椼?/p>

]]>Java 緗戠粶緙栫▼浠庤彍楦熷埌鍙吔 3錛氬鎺ュ瓧鍒濆鍖栬瑙?/title><link>http://www.tkk7.com/shinzey/archive/2012/01/16/368393.html</link><dc:creator>铚灞卞厗瀛ㄩ緲</dc:creator><author>铚灞卞厗瀛ㄩ緲</author><pubDate>Mon, 16 Jan 2012 02:31:00 GMT</pubDate><guid>http://www.tkk7.com/shinzey/archive/2012/01/16/368393.html</guid><wfw:comment>http://www.tkk7.com/shinzey/comments/368393.html</wfw:comment><comments>http://www.tkk7.com/shinzey/archive/2012/01/16/368393.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.tkk7.com/shinzey/comments/commentRss/368393.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/shinzey/services/trackbacks/368393.html</trackback:ping><description><![CDATA[<div id="mycq2ci" class="article"> <p><code>ServerSocket</code> 綾誨拰 <code>Socket</code> 綾婚兘鎻愪緵浜嗗涓叕鍏辨瀯閫犳柟娉曘備笉鍚岀殑鏋勯犳柟娉曚笉浠呭甫鐨勫弬鏁頒笉鍚岋紝鎵鍏鋒湁鐨勬剰涔変篃涓嶄竴鏍楓備笅闈㈠垎鍒В鏋愯繖涓や釜綾葷殑瀹炰緥鍒濆鍖栬繃紼嬨?/p> <h1><code>ServerSocket</code> 瀹炰緥鐨勫垵濮嬪寲</h1> <p><code>ServerSocket</code> 綾繪彁渚涗簡鍥涗釜鏋勯犲櫒錛?/p> <dl> <dt><code>public ServerSocket(int port) throws IOException</code></dt> <dt><code>public ServerSocket(int port, int backlog) throws IOException</code></dt> <dt><code>public ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException</code></dt> <dt><code>public ServerSocket() throws IOException</code></dt> </dl> <p>甯﹀弬鏋勯犲櫒鐢ㄦ潵鍒涘緩宸茬粦瀹氱殑鏈嶅姟鍣ㄥ鎺ュ瓧錛屼篃灝辨槸璇存瀯閫犳垚鍔熷悗瀹冨氨宸茬粡寮濮嬩睛鍚寚瀹氱殑绔彛錛屼笖鑳藉璋冪敤 <code>accept()</code> 鏂規硶鏉ユ帴鍙楀鎴風榪炴帴銆傞粯璁ゆ瀯閫犲櫒鍒欎細鍒涘緩鏈粦瀹氱殑鏈嶅姟鍣ㄥ鎺ュ瓧錛屾瀯閫犳垚鍔熷悗蹇呴』鎵嬪姩灝嗗叾緇戝畾鍒頒竴涓湰鍦板湴鍧鎵嶈兘鐢紝鍦ㄧ粦瀹氫箣鍓嶅彲浠ヨ繘琛屼竴浜涢夐」閰嶇疆銆?/p> <h2>甯﹀弬鏋勯犲櫒</h2> <p>鎬葷殑鏉ヨ錛屽甫鍙傛瀯閫犲櫒鎻愪緵浜嗕笁涓弬鏁幫細</p> <dl> <dt><code>port</code></dt> <dd>鎸囧畾璇ユ湇鍔″櫒濂楁帴瀛楁墍瑕佷睛鍚殑鏈湴绔彛銆傚鏋滀負 0錛屽垯鐢辯郴緇熻嚜鍔ㄥ垎閰嶄竴涓鍙e彿錛岃繖蹇呴』浠ュ彟澶栫殑鏂瑰紡璁╁鎴風鑾峰彇绔彛鍙楓?/dd> <dt><code>backlog</code></dt> <dd>榪欎釜鍚嶈瘝鐩墠榪樻病鏈夊悎閫傜殑璇戝悕銆傚簳灞傜郴緇熺殑 TCP 瀹炵幇浼氱淮鎶や竴涓繛鎺ラ槦鍒楋紝璇ラ槦鍒楃紦瀛樹簡宸茶 TCP 澶勭悊瀹屾瘯錛屼絾榪樻病鏈夎鏈嶅姟鍣ㄥ鎺ュ瓧鎺ュ彈鐨勫鎴風榪炴帴銆備竴鏃︽煇涓繛鎺ヨ鎺ュ彈錛堥氳繃璋冪敤 <code>accept()</code> 鏂規硶錛夛紝瀹冨氨浼氳浠庨槦鍒椾腑縐婚櫎銆?code>backlog</code> 鍙傛暟灝辯敤浜庢寚瀹氶槦鍒楃殑鏈澶ч暱搴︼紝榛樿鍊間負 50錛屼絾榪欎釜鍊煎彧鏄竴涓緩璁紝搴曞眰緋葷粺鍙兘鏍規嵁闇瑕佽嚜鍔ㄨ皟鏁淬傚鏋滈槦鍒楁弧浜嗭紝鍒欏叾琛屼負鏄鉤鍙扮浉鍏崇殑錛氬井杞殑 WINSOCK 浼氭嫆緇濇柊鐨勮繛鎺ワ紝鍏朵粬瀹炵幇鍒欎粈涔堥兘涓嶅仛銆備弗鏍煎湴璇達紝寰蔣娌℃湁閬靛畧瑙勮寖錛岀牬鍧忎簡娓告垙瑙勫垯鈥︹?/dd> <dt><code>bindAddr</code></dt> <dd>涓鍙版満鍣ㄥ彲鑳戒細鏈夊涓湰鍦?IP 鍦板潃錛屼緥濡傚悓鏃朵嬌鐢ㄥ鍧楃綉鍗°備嬌鐢ㄥ叾浠栦袱涓甫鍙傛瀯閫犲櫒鏃訛紝璇ュ弬鏁頒負 <code>null</code>錛屾湇鍔″櫒濂楁帴瀛椾細鍦ㄦ墍鏈夌殑鏈湴 IP 鍦板潃錛?code>0.0.0.0</code> 鎴?<code>::0</code>錛変笂渚﹀惉銆傚鏋滃笇鏈涘彧渚﹀惉涓涓湴鍧錛屽垯鍙嬌鐢ㄨ鍙傛暟銆?/dd> </dl> <h2>榛樿鏋勯犲櫒</h2> <p>濡傛灉浣跨敤榛樿鏋勯犲櫒錛屽湪緇戝畾鍦板潃鍓嶏紝榪樺彲浠ュ仛浜涢厤緗傜粦瀹氭搷浣滅敱涓や釜 <code>bind</code> 鏂規硶瀹氫箟錛屽弬鏁扮被浼間簬甯﹀弬鏋勯犲櫒銆傞厤緗」鍖呮嫭浠ヤ笅鏂歸潰錛堥兘蹇呴』鍦ㄧ粦瀹氬墠閰嶇疆錛夛細</p> <dl> <dt>璁劇疆鏄惁閲嶇敤鏈湴鍦板潃</dt> <dd>璇ラ夐」鐢?<code>setReuseAddress(boolean on)</code> 鏂規硶閰嶇疆錛屽搴斿簳灞傜郴緇熺殑 <code>SO_REUSEADDR</code> 濂楁帴瀛楅夐」銆侸DK 娌℃湁瀹氫箟璇ラ夐」鐨勯粯璁ゅ箋傚鏋滆閫夐」涓?<code>false</code>錛屽垯鍦ㄥ叧闂?TCP 榪炴帴鏃訛紝涓轟簡淇濊瘉鍙潬鎬э紝璇ヨ繛鎺ュ彲鑳藉湪鍏抽棴鍚庣殑涓孌墊椂闂達紙澶х害涓ゅ垎閽燂級鍐呬繚鎸佽秴鏃剁姸鎬侊紙閫氬父縐頒負 <code>TIME_WAIT</code> 鐘舵佹垨 <code>2MSL</code> 絳夊緟鐘舵侊級錛岃繖孌墊椂闂撮噷鏃犳硶灝嗘柊寤虹殑鏈嶅姟鍣ㄥ鎺ュ瓧緇戝畾鍒板悓涓涓湴鍧銆傚湪寮鍙戦樁孌碉紝鏈嶅姟鍣ㄥ彲鑳戒笉鏂噸鍚紝鎵撳紑鏀歸夐」浼氶潪甯告湁鐢ㄣ?/dd> <dt>璁劇疆鎺ユ敹緙撳啿鍖哄ぇ灝?/dt> <dd>璇ラ夐」鐢?<code>setReceiveBufferSize(int size)</code> 鏂規硶閰嶇疆錛屽搴斿簳灞傜郴緇熺殑 <code>SO_RCVBUF</code> 濂楁帴瀛楅夐」錛屽崟浣嶆槸瀛楄妭銆傘奟FC 1323 - TCP Extensions for High Performance銆嬪皢緙撳啿鍖哄ぇ灝忓畾涔変負 64KB銆傝閫夐」鍙槸涓涓緩璁鹼紝搴曞眰緋葷粺鍙兘鏍規嵁闇瑕佽嚜琛岃皟鏁淬?/dd> <dt>璁劇疆瓚呮椂鍊?/dt> <dd>璇ラ夐」鐢?<code>setSoTimeout(int timeout)</code> 鏂規硶閰嶇疆錛屽搴斿簳灞傜郴緇熺殑 <code>SO_TIMEOUT</code> 濂楁帴瀛楅夐」錛屽崟浣嶆槸姣銆傞粯璁ゅ間負 0銆傝閫夐」褰卞搷 <code>accept</code> 鏂規硶鐨勯樆濉炴椂闂撮暱搴︼紝濡傛灉瓚呮椂灝嗗紩鍙?<code>SocketTimeoutException</code>銆傚鏋滆涓?0錛屽垯琛ㄧず姘鎬笉瓚呮椂銆?/dd> <dt>璁劇疆鎬ц兘棣栭夐」</dt> <dd>鎬ц兘棣栭夐」鍖呮嫭榪炴帴鏃墮棿銆佸歡榪熷拰甯﹀涓変釜閫夐」錛岀敱 <code>setPerformancePreferences(int connectionTime, int latency, int bandwidth) </code> 鏂規硶閰嶇疆銆傝繖涓変釜鏁板煎垎鍒〃紺虹煭榪炴帴鏃墮棿銆佷綆寤惰繜鍜岄珮甯﹀鐨勭浉瀵歸噸瑕佹э紝鏁板艱秺澶у垯瓚婇噸瑕侊紱鍏跺悇鑷殑緇濆鍊兼病鏈夋剰涔夈傝鏂規硶鐨勫垵琛鋒槸涓轟簡璁?Java 鑳藉湪鐢ㄩ潪 TCP/IP 瀹炵幇鐨勫鎺ュ瓧鐜涓嬪伐浣滃緱鏇村ソ錛屾煇浜涢渶瑕佸緗戠粶榪涜璋冧紭鐨勭▼搴忎篃鍙互灝嗚繖涓変釜棣栭夐」浣滀負閰嶇疆鍙傛暟鎻愪緵緇欑敤鎴楓?/dd> </dl> <h1><code>Socket</code> 瀹炰緥鐨勫垵濮嬪寲</h1> <p><code>Socket</code> 綾繪彁渚涗簡鍏釜鍏叡鏋勯犲櫒錛堝凡榪囨椂鐨勯櫎澶栵級錛?/p> <dl> <dt><code>public Socket(String host, int port) throws UnknownHostException, IOException</code></dt> <dt><code>public Socket(InetAddress address, int port) throws IOException</code></dt> <dt><code>public Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException</code></dt> <dt><code>public Socket(InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException</code></dt> <dt><code>public Socket()</code></dt> <dt><code>public Socket(Proxy proxy)</code></dt> </dl> <p>鍓嶅洓涓瀯閫犲櫒鍒涘緩宸茶繛鎺ョ殑瀹㈡埛绔鎺ュ瓧錛屼篃灝辨槸璇存瀯閫犵殑鏃跺欏氨浼氬幓榪炴帴鏈嶅姟鍣ㄣ傚墠涓や釜鏋勯犲櫒闇瑕佹彁渚涙湇鍔″櫒鐨勫湴鍧鍜岀鍙d綔涓哄弬鏁幫紝鏈湴鍦板潃鍜岀鍙g敱緋葷粺鑷姩鍒嗛厤錛涘悗涓や釜鍏佽鎵嬪姩鎸囧畾鏈湴鍦板潃鍜岀鍙o紝浣嗘瀬灝戜嬌鐢ㄣ傚悗涓や釜鏋勯犲櫒鍒涘緩鏈繛鎺ョ殑濂楁帴瀛楋紝鍒涘緩鍚庨渶瑕佽皟鐢?<code>connect</code> 鏂規硶鎵嬪姩榪炴帴錛岃繛鎺ヤ箣鍓嶅彲浠ュ仛涓浜涢厤緗傛渶鍚庝竴涓瀯閫犲櫒鎺ュ彈涓涓唬琛ㄤ唬鐞嗘湇鍔″叾鐨?<code>Proxy</code> 瀵硅薄錛孞DK 鏀寔 HTTP 鍜?SOCKS錛圴4 鎴?V5錛変袱縐嶄唬鐞嗙被鍨嬨?/p> <h2>榪炴帴鍓嶇殑閰嶇疆</h2> <p>鍦ㄨ繛鎺ュ墠錛屽鎴風濂楁帴瀛椾笉浠呭儚鏈嶅姟鍣ㄥ鎺ュ瓧閭f牱鍙互璁劇疆鏄惁閲嶇敤鏈湴鍦板潃銆佺紦鍐插尯澶у皬銆佽秴鏃跺煎拰鎬ц兘棣栭夐」錛岃繕鑳藉閰嶇疆浠ヤ笅鍚勯」錛堥兘蹇呴』鍦ㄨ繛鎺ュ墠閰嶇疆錛夛細</p> <dl> <dt>璁劇疆鏄惁淇濇寔媧昏穬</dt> <dd>璇ラ夐」鐢?<code>setKeepAlive(boolean on)</code> 鏂規硶閰嶇疆錛屽搴斿簳灞傜郴緇熺殑 <code>SO_KEEPALIVE</code> 濂楁帴瀛楅夐」銆傞粯璁ゅ間負 <code>false</code>銆傚鏋滄墦寮璇ラ夐」錛屽垯濂楁帴瀛椾細瀹氭湡鑷姩鍙戦佷繚鎸佹椿璺冪殑鎺㈡祴鎬ф秷鎭紝綾諱技浜庡績璺蟲嫻嬨傛牴鎹奟FC 1122 - Requirements for Internet Hosts銆嬬殑瑙勫畾錛屼繚鎸佹椿璺冩満鍒跺彧鏄?TCP 鐨勪竴涓彲閫夊姛鑳斤紝濡傛灉鏀寔鐨勮瘽錛岄粯璁ゅ繀欏諱負 <code>false</code>錛岃屼笖榪欑鏈哄埗榛樿鍦ㄦ垚鍔熷緩绔嬭繛鎺ュ悗錛屼笖榪炵畫涓ゅ皬鏃舵病鏈夋暟鎹紶杈撶殑鎯呭喌涓嬫墠浼氳嬋媧匯備粠鍙︿竴鏂歸潰鏉ョ湅錛岄氳繃濂楁帴瀛楃殑 I/O 鎿嶄綔瀹屽叏鍙互鐭ラ亾榪炴帴鏄惁榪樻湁鏁堬紝鎵浠ヨ閫夐」鐨勫疄鐢ㄤ環鍊間笉澶с?/dd> <dt>璁劇疆鏄惁鏀跺彂甯﹀鏁版嵁</dt> <dl>璇ラ夐」鐢?<code>setOOBInline(boolean on)</code> 鏂規硶閰嶇疆錛屽搴斿簳灞傜郴緇熺殑 <code>SO_OOBINLINE</code> 濂楁帴瀛楅夐」銆傞粯璁ゅ間負 <code>off</code>銆傚甫澶栨暟鎹紙Out-of-band Data錛変篃鍙仛绱фユ暟鎹紝琛ㄧず鏁版嵁寰堥噸瑕侊紝闇瑕佷嬌鐢ㄤ笉鍚屼簬鍙戦佹櫘閫氭暟鎹殑涓涓笓鐢ㄩ氶亾鏉ュ彂閫併傛墦寮璇ラ夐」鍚庯紝灝卞彲浠ヨ皟鐢?<code>sendUrgentData(int data)</code> 鏂規硶鍙戦佷竴涓瓧鑺傜殑绱фユ暟鎹侸DK 瀵瑰甫澶栨暟鎹彧鎻愪緵浜嗘湁闄愭敮鎸侊紝绱фユ暟鎹皢浼氬拰鏅氭暟鎹竴璧瘋鏀跺埌錛屽茍涓旀棤娉曡嚜鍔ㄥ尯鍒嗐傝閫夐」瀵瑰簲鐢ㄥ紑鍙戜漢鍛樻剰涔変笉澶с?/dl> <dt>璁劇疆鏄惁浠庡鍏抽棴榪炴帴</dt> <dd>璇ラ夐」鐢?<code>setSoLinger(boolean on, int linger)</code> 鏂規硶閰嶇疆錛屽搴斿簳灞傜郴緇熺殑 <code>SO_LINGER</code> 濂楁帴瀛楅夐」銆傞粯璁や負 <code>false</code>銆傝閫夐」鍙細褰卞搷濂楁帴瀛楃殑鍏抽棴錛屽叾涓殑 <code>linger</code> 鍙傛暟琛ㄧず瓚呮椂鏃墮棿錛屽崟浣嶄負縐掋傚鏋滄墦寮鏀歸夐」錛氬鏋滃皢 <code>linger</code> 璁句負 0錛屽垯鍏抽棴濂楁帴瀛楃殑鏃跺欙紝鏈彂閫佺殑鏁版嵁浼氳涓㈠純錛屼笖鍙︿竴绔細鍑虹幇榪炴帴琚悓浣嶄綋閲嶇疆鐨勫紓甯革紱濡傛灉 <code>linger</code> 闈?0錛屽垯鍏抽棴濂楁帴瀛楃殑綰跨▼灝嗚闃誨錛岀洿鍒版暟鎹叏閮ㄥ彂閫佹垨瓚呮椂錛岃秴鏃跺悗鐨勮涓轟笌搴曞眰緋葷粺鐩稿叧錛孞DK 鏃犳硶鎺у埗銆傚鏋滃叧闂閫夐」錛屽垯濂楁帴瀛楁甯稿叧闂紝鏁版嵁涔熶細鍏ㄩ儴鍙戦併傜敱浜庡簳灞傚疄鐜扮殑宸紓鎬э紝涓嶆彁鍊″簲鐢ㄥ紑鍙戜漢鍛樻墦寮璇ラ夐」銆?/dd> <dt>璁劇疆鏄惁寤惰繜鍙戦佹暟鎹?/dt> <dd>璇ラ夐」鐢?<code>setTcpNoDelay(boolean on)</code> 鏂規硶閰嶇疆錛屽搴斿簳灞傜郴緇熺殑 <code>TCP_NODELAY</code> TCP 閫夐」銆傞粯璁ゅ間負 <code>off</code>銆傛墦寮璇ラ夐」灝嗙鐢?Nagle 綆楁硶錛孴CP 鍖呬細绔嬪嵆鍙戦侊紱鍏抽棴璇ラ夐」鍒欎細鍚敤 Nagle 綆楁硶錛屽涓緝灝忕殑 TCP 鍖呬細琚粍鍚堟垚涓涓ぇ鍖呬竴璧峰彂閫侊紝铏界劧鍙戦佸歡榪熶簡錛屼絾鏈夊埄浜庨伩鍏嶇綉緇滄嫢濉炪傞粯璁や負 <code>false</code>銆傝閫夐」瀵瑰疄鏃舵у緢寮虹殑紼嬪簭鍙兘鏈夌敤錛屼絾涓鑸殑紼嬪簭涓嶉渶瑕佸叧蹇冦?/dd> <dt>璁劇疆嫻侀噺綾誨埆</dt> <dd>璇ラ夐」鐢?<code>setTrafficClass(int tc)</code> 鏂規硶閰嶇疆錛屽搴斿簳灞傜郴緇熺殑鈥滄祦閲忕被鍒濆鎺ュ瓧灞炴с傝閫夐」鐢ㄤ簬鍚戠綉緇滐紙渚嬪璺敱鍣級鎻愮ず浠庤濂楁帴瀛楀彂閫佺殑鍖呴渶瑕佽幏鍙栧摢浜涙湇鍔$被鍨嬶紝瀵規湰鍦?TCP 鍗忚鏍堟病鏈夊獎鍝嶃侷Pv4 鍜?IPv6 鍒嗗埆瀹氫箟浜嗗涓笉鍚岀殑鍊鹼紝渚嬪 IPv4 灝?<code>0x08</code> 瀹氫箟涓烘渶澶у悶鍚愰噺錛?code>0x10</code> 瀹氫箟涓烘渶灝忓歡榪燂紝絳夌瓑銆傚彲浠ョ敤鎴栬繍綆楀皢澶氫釜鍊煎悎騫朵負涓涓夐」銆傝閫夐」鐢ㄦ潵璋冩暣鎬ц兘錛岄渶瑕佹牴鎹疄闄呮儏鍐佃緗傜敱浜庡彧鏄緩璁鹼紝鍙兘琚綉緇滃拷鐣ャ?/dd> </dl> </div><img src ="http://www.tkk7.com/shinzey/aggbug/368393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/shinzey/" target="_blank">铚灞卞厗瀛ㄩ緲</a> 2012-01-16 10:31 <a href="http://www.tkk7.com/shinzey/archive/2012/01/16/368393.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍗曚緥妯″紡鐨勪竴涓枒闂?/title><link>http://www.tkk7.com/shinzey/archive/2012/01/10/368251.html</link><dc:creator>铚灞卞厗瀛ㄩ緲</dc:creator><author>铚灞卞厗瀛ㄩ緲</author><pubDate>Tue, 10 Jan 2012 09:39:00 GMT</pubDate><guid>http://www.tkk7.com/shinzey/archive/2012/01/10/368251.html</guid><wfw:comment>http://www.tkk7.com/shinzey/comments/368251.html</wfw:comment><comments>http://www.tkk7.com/shinzey/archive/2012/01/10/368251.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.tkk7.com/shinzey/comments/commentRss/368251.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/shinzey/services/trackbacks/368251.html</trackback:ping><description><![CDATA[<div id="4sy4kc8" class="article"> <p>緗戜笂寰堝鍏充簬鍗曚緥妯″紡鍐欐硶鐨勬枃绔狅紝涓嶅涔庨タ姹夊拰鎳掓眽涓ょ褰㈠紡鐨勮璁恒傚緢澶氫漢鍠滄鐢ㄦ噿姹夊紡錛屽洜涓鴻寰楀畠瀹炵幇浜嗗歡榪熷姞杞斤紝鍙互璁╃郴緇熺殑鎬ц兘鏇村ソ銆備絾浜嬪疄鏋滅湡濡傛鍚楋紵鎴戝姝ゅ瓨鐤戙?/p> <p>棣栧厛鎴戜滑媯鏌ヤ竴涓嬮タ姹夊拰鎳掓眽鍗曚緥妯″紡鏈綆鍗曠殑鍐欐硶錛堣繖閲屼笉璁ㄨ鍝鎳掓眽鍐欐硶鏇村ソ錛夛細</p> <pre class="brush: java"> // 楗挎眽 public final class HungrySingleton { private static final HungrySingleton INSTANCE = new HungrySingleton(); private HungrySingleton() { System.out.println("Initializing..."); } public static HungrySingleton getInstance() { return INSTANCE; } } // 鎳掓眽 public final class LazySingleton { private static LazySingleton INSTANCE; private LazySingleton() { System.out.println("Initializing..."); } public static synchronized LazySingleton getInstance() { if (INSTANCE == null) { INSTANCE = new LazySingleton(); } return INSTANCE; } } </pre> <p>浠庣悊璁轟笂鏉ヨ錛?code>HungrySingleton</code> 鐨勫崟渚嬪湪璇ョ被絎竴嬈′嬌鐢ㄧ殑鏃跺欏垱寤猴紝鑰?<code>LazySingleton</code> 鐨勫崟渚嬪垯鍦ㄥ叾 <code>getInstance()</code> 鏂規硶琚皟鐢ㄧ殑鏃跺欏垱寤恒傝嚦浜庣綉涓婃湁浜哄0縐扳滈タ姹夊紡涓嶇鐢ㄤ笉鐢ㄩ兘浼氬垵濮嬪寲鈥濓紝綰睘璧拌礬鐨勬椂鍊欐瀛愯繄寰楀お澶с傝皝鐨勫姞杞芥洿榪燂紵濡傛灉浣犲彧鏄皟鐢ㄥ畠浠殑 <code>getInstance()</code> 鏂規硶鏉ュ緱鍒板崟渚嬪璞★紝鍒欏畠浠兘鏄歡榪熷姞杞斤紝榪欐牱鎳掓眽寮忔病鏈変換浣曟剰涔夛紝鑰屼笖鐢變簬 <code>LazySingleton</code> 閲囧彇浜嗗悓姝ユ帾鏂斤紝鎬ц兘鏇翠綆錛堝彲浠ヨ浠諱綍鎳掓眽寮忕殑鎬ц兘閮戒綆浜庨タ姹夊紡錛夈傚綋浣犱嬌鐢ㄤ竴涓崟渚嬬被鐨勬椂鍊欙紝闅鵑亾絎竴姝ヤ笉鏄皟鐢?<code>getInstance()</code> 涔堬紵鎵浠ュ湪鑷繁鐨勪唬鐮侀噷錛屾垜鏇村枩嬈㈢敤楗挎眽寮忋?/p> <p>涓嬮潰鐢ㄤ竴涓緥瀛愭潵嫻嬭瘯鍔犺澆欏哄簭錛?/p> <pre class="brush: java"> // 楗挎眽 System.out.println("Before"); HungrySingleton.getInstance(); System.out.println("After"); // 鎳掓眽 System.out.println("Before"); LazySingleton.getInstance(); System.out.println("After"); </pre> <p>杈撳嚭緇撴灉閮芥槸錛?/p> <pre class="output">Before Initializing... After</pre> <p>閭d箞錛屾噿姹夋ā寮忚繕鏈変粈涔堝瓨鍦ㄦ剰涔夛紵濡傛灉緋葷粺浣跨敤浜嗘煇浜涢渶瑕佸湪鍚姩鏃跺綾昏繘琛屾壂鎻忕殑妗嗘灦錛屼嬌鐢ㄩタ姹夊紡鐨勮瘽錛屽惎鍔ㄦ椂闂存瘮鎳掓眽寮忔洿闀匡紝濡傛灉浣跨敤浜嗗ぇ閲忓崟渚嬬被錛屼笉鍒╀簬寮鍙戦樁孌點傚湪緋葷粺鐨勬寮忚繍琛岄樁孌碉紝鎵鏈夌殑鍗曚緥綾昏繜鏃╅兘瑕佸姞杞界殑錛屾葷殑璇存潵涓よ呮ц兘鎸佸鉤錛屼絾鏄噿姹夊紡姣忔閮借嚦灝戝涓涓垽鏂紝鎵浠ヨ秺鍒板悗鏈熻秺浣撶幇楗挎眽鐨勪紭瓚婃с?/p> <p>鏈鍚庯紝鎺ㄨ崘涓嬨奅ffective Java銆嬬浜岀増鎸囧嚭鐨勭敤鏋氫婦綾誨瀷瀹炵幇鐨勯タ姹夊崟渚嬫ā寮忥細</p> <pre class="brush: java"> // 楗挎眽 public enum HungrySingleton { INSTANCE; private HungrySingleton() { } } </pre> <p>榪欑鍐欐硶涓嶄絾鏈綆媧侊紝榪樿兘杞繪槗鎵╁睍涓哄疄渚嬫暟閲忓浐瀹氱殑鈥滃渚嬫ā寮忊濄?/p> </div><img src ="http://www.tkk7.com/shinzey/aggbug/368251.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/shinzey/" target="_blank">铚灞卞厗瀛ㄩ緲</a> 2012-01-10 17:39 <a href="http://www.tkk7.com/shinzey/archive/2012/01/10/368251.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://jiggybaby.com" target="_blank">久久国产精品免费专区</a>| <a href="http://js06vip.com" target="_blank">久久亚洲高清观看</a>| <a href="http://jcss99.com" target="_blank">久久免费的精品国产V∧</a>| <a href="http://sdzhly.com" target="_blank">黄网站在线播放视频免费观看</a>| <a href="http://416164.com" target="_blank">亚洲第一页在线播放</a>| <a href="http://44168888.com" target="_blank">亚洲精品二区国产综合野狼 </a>| <a href="http://45-po.com" target="_blank">国产成人精品日本亚洲</a>| <a href="http://cangtuyuan.com" target="_blank">国产成人免费a在线视频色戒</a>| <a href="http://777vip8.com" target="_blank">免费能直接在线观看黄的视频 </a>| <a href="http://jpsp8.com" target="_blank">亚洲无线观看国产精品</a>| <a href="http://wusongtv.com" target="_blank">好爽好紧好大的免费视频国产</a>| <a href="http://lzqzvip.com" target="_blank">国产精品久久久久久久久免费</a>| <a href="http://zbr555sina.com" target="_blank">国内永久免费crm系统z在线</a>| <a href="http://wangdei.com" target="_blank">日韩电影免费在线观看网址</a>| <a href="http://xjkakatong.com" target="_blank">亚洲av日韩aⅴ无码色老头</a>| <a href="http://woaianli.com" target="_blank">亚洲H在线播放在线观看H</a>| <a href="http://4438xa48.com" target="_blank">亚洲黄色网址大全</a>| <a href="http://600c81.com" target="_blank">久久青青成人亚洲精品</a>| <a href="http://jiujiujingpin.com" target="_blank">亚洲真人无码永久在线</a>| <a href="http://ss8kk.com" target="_blank">亚洲国产aⅴ综合网</a>| <a href="http://5gi555.com" target="_blank">四虎影库久免费视频</a>| <a href="http://maomi02.com" target="_blank">国产精品美女自在线观看免费</a>| <a href="http://zzyqr.com" target="_blank">无码一区二区三区免费视频</a>| <a href="http://cjfuli.com" target="_blank">97热久久免费频精品99</a>| <a href="http://www-01313.com" target="_blank">99re6热视频精品免费观看</a>| <a href="http://minliusoft.com" target="_blank">精品视频在线免费观看</a>| <a href="http://www907ii.com" target="_blank">久久精品免费观看</a>| <a href="http://chinashineway.com" target="_blank">91精品全国免费观看青青</a>| <a href="http://www137av.com" target="_blank">9久热精品免费观看视频</a>| <a href="http://avyjj.com" target="_blank">和老外3p爽粗大免费视频</a>| <a href="http://bobostrong31.com" target="_blank">亚洲天堂免费在线视频</a>| <a href="http://6464k.com" target="_blank">caoporn成人免费公开</a>| <a href="http://6132423.com" target="_blank">aa级毛片毛片免费观看久</a>| <a href="http://nmcytsi.com" target="_blank">国产精品午夜免费观看网站</a>| <a href="http://bying100.com" target="_blank">51午夜精品免费视频</a>| <a href="http://rr433.com" target="_blank">成人网站免费大全日韩国产</a>| <a href="http://c7372.com" target="_blank">a级毛片免费在线观看</a>| <a href="http://pgyadv.com" target="_blank">免费精品无码AV片在线观看</a>| <a href="http://whdysdt.com" target="_blank">最近2018中文字幕免费视频</a>| <a href="http://yw835.com" target="_blank">人与禽交免费网站视频</a>| <a href="http://2002tw.com" target="_blank">女人毛片a级大学毛片免费</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>