锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲www在线观看,亚洲w码欧洲s码免费,亚洲精品色在线网站http://www.tkk7.com/mulinka/category/1841.html韙忓疄鑲共錛屼笉鍙溂楂樻墜浣?/description>zh-cnWed, 28 Feb 2007 13:15:05 GMTWed, 28 Feb 2007 13:15:05 GMT60鍦↗ava紼嬪簭涓繍琛屽閮ㄧ被鏂囦歡錛堣漿錛?/title><link>http://www.tkk7.com/mulinka/articles/11427.html</link><dc:creator>欖斾箣鍗″崱</dc:creator><author>欖斾箣鍗″崱</author><pubDate>Mon, 29 Aug 2005 05:03:00 GMT</pubDate><guid>http://www.tkk7.com/mulinka/articles/11427.html</guid><wfw:comment>http://www.tkk7.com/mulinka/comments/11427.html</wfw:comment><comments>http://www.tkk7.com/mulinka/articles/11427.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/mulinka/comments/commentRss/11427.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mulinka/services/trackbacks/11427.html</trackback:ping><description><![CDATA[<TABLE width="100%"> <TBODY> <TR> <TD class=a14><B>涓銆佸紩璦</B></TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>鏃犺鏄敤浼犵粺鐨勭紪紼嬭璦錛圕++銆乂B絳夛級榪樻槸Java璇█緙栫▼錛岄兘緇忓父闇瑕佸湪涓涓繍琛岀殑紼嬪簭涓墽琛屽彟澶栦竴涓嫭绔嬬殑澶栭儴紼嬪簭銆備緥濡傜敤Java璁捐涓涓狪DE紼嬪簭錛岄偅涔堣繖涓狪DE紼嬪簭灝卞繀闇鑳藉璋冨紡銆佽繍琛屽叾瀹冪嫭绔嬬殑澶栭儴Java紼嬪簭銆傚喌涓旂洿鎺ヨ繍琛屽凡緇忓瓨鍦ㄧ殑澶栭儴紼嬪簭鏉ュ疄鐜版湰紼嬪簭鐨勬煇浜涚壒瀹氱殑鍔熻兘錛屼篃鏄彁楂樼▼搴忓紑鍙戞晥鐜囩殑涓縐嶉噸瑕佹墜孌點?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>Java2涓哄疄鐜板湪涓涓狫ava紼嬪簭涓繍琛屽閮ㄧ被鏂囦歡錛堝嵆Java紼嬪簭錛夋彁渚涗簡鐨勪袱縐嶈В鍐蟲柟妗堬紝鍗沖湪鍚屼竴榪涚▼涓繍琛屽閮ㄧ被鏂囦歡鍜屽湪涓嶅悓榪涚▼涓繍琛屽閮ㄧ被鏂囦歡銆?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14><B>浜屻佸湪鍚屼竴榪涚▼涓繍琛屽閮ㄧ被鏂囦歡</B></TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>Java瑙勫畾浠諱綍Java搴旂敤錛坅pplication錛夌殑鍏ュ彛閮芥槸錛歮ain()錛屽洜姝よ瀹炵幇鍦ㄥ悓涓榪涚▼涓繍琛屽閮ㄧ被鏂囦歡錛屽彧瑕佹兂鍔炴硶鍦ㄧ▼搴忎腑鐩存帴璋冪敤澶栭儴綾繪枃浠剁殑main()鏂規硶鍗沖彲銆?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>Java2涓殑鏄犺薄錛圧eflection錛堿PI鍙互瀵笿ava铏氭嫙鏈轟腑鐨勭被銆佹帴鍙c佸璞$瓑榪涜鏄犺薄錛岄氳繃瀹冭兘澶熷姩鎬佸湴寰楀埌綾匯佹帴鍙c佸璞$殑鍚勭淇℃伅錛岃繕鑳藉鍔ㄦ佸湴璁劇疆瀵硅薄鐨勫煙鐨勫鹼紝騫跺彲浠ュ姩鎬佸湴璋冪敤瀵硅薄涓殑鍚勭鏂規硶銆?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>鍥犳錛屾垜浠彲浠ュ埄鐢≧eflection API鍦ㄨ繍琛屾椂錛坮untime錛夊姩鎬佸湴紜畾澶栭儴綾繪枃浠剁殑main()鏂規硶錛岀劧鍚庤皟鐢ㄥ畠銆備緥濡傦細</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>鍋囧畾灝嗚鎵ц鐨勫閮ㄧ被鏂囦歡錛圛nvoked.java錛夊涓嬶細</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>public class Invoked {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>public static void main(String[] args) {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>if (args.length != 2) {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>System.err.println("Usage: java Invoked name sex ");</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>System.exit(1);</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>System.out.println("Hello, I come from OutClassFile!");</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>System.out.println("my name is "+args[0]);</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>System.out.println("my sex is "+args[1]);</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>榪愯涓婅堪綾繪枃浠剁殑涓葷▼搴忥紙Invoker.java錛変竴鑸叿鏈夊涓嬪艦寮忥細</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>import java.lang.reflect.*;</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>public class Invoker {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>public static void main(String[] args) {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>//args[0]瀛樺偍琚墽琛岀殑澶栭儴綾誨悕錛屾湰渚嬩腑args[0]=鈥淚nvoked鈥?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>if (args.length != 1) {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>System.err.println("Usage: java Invoker ");</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>System.exit(1);</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>Class[] argTypes = new Class[1]; </TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>argTypes[0] = String[].class;</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>try {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>Method mainMethod = Class.forName(args[0]).getDeclaredMethod("main",argTypes);</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>Object[] argListForInvokedMain = new Object[1];</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>//琚皟鐢ㄧ殑main()鏂規硶鐨勫弬鏁頒釜鏁?1</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>argListForInvokedMain[0] = new String[2];</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>//琚皟鐢ㄧ殑main()鏂規硶鐨勫弬鏁版槸涓涓暱搴︿負2鐨凷tring鏁扮粍</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>String argsToinvoked[]={"WangShuangLin","Man"};</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>ArgListForInvokedMain[0]= argsToinvoked;</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>//璁劇疆浼犻掔粰琚皟鐢ㄧ殑澶栭儴綾葷殑main()鏂規硶鐨勫弬鏁?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>mainMethod.invoke(null, argListForInvokedMain);</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>//inkoke(Object obj, Object[] args)鏄皟鐢ㄦ柟娉曪紱</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>//鍏朵腑obj鏄柟娉曟墍鍦ㄧ殑瀵硅薄瀹炰緥; 浣嗗洜涓鴻繖閲岀殑main()鏄潤鎬佹柟娉曪紝</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>//鎵浠ユ棤欏誨疄渚嬪寲錛屽~涓妌ull鍗沖彲錛?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>//args鏄紶閫掔粰璇ユ柟娉曠殑鍙傛暟銆?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>catch (ClassNotFoundException ex) {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>System.err.println("Class"+args[0]+"not found in classpath.");</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>catch (NoSuchMethodException ex) {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>System.err.println("Class "+args[0]+" does not define public static void main(String[])");</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>catch (InvocationTargetException ex) {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>System.err.println("Exception while executing "+args[0]+ ":"+ex.getTargetException());</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>catch (IllegalAccessException ex) {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>System.err.println("main(String[]) in class "+args[0] + "is not public");</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>鐢ㄥ涓嬬殑鍛戒護琛岃繍琛屼富紼嬪簭錛歫ava Invoker Invoked銆?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>榪欎釜渚嬪瓙綆鍗曞睍紺轟簡濡備綍鍦ㄥ悓涓榪涚▼錛坧rocess錛変腑鎵ц澶栭儴綾繪枃浠訛紝涓嶄粎濡傛錛岃屼笖榪樻槸鍦ㄥ悓涓綰跨▼錛坱hread錛変腑錛屽綋鐒跺畬鍏ㄥ彲浠ュ湪涓嶅悓鐨勭嚎紼嬩腑鏉ュ畬鎴愩?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14><B>涓夈佸湪涓嶅悓榪涚▼涓繍琛屽閮ㄧ被鏂囦歡</B></TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>瑕佸湪涓嶅悓榪涚▼涓繍琛屽閮ㄧ被鏂囦歡錛屽彧瑕佹兂鍔炴硶鍦ㄧ▼搴忎腑鐩存帴鎵ц錛?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>java 澶栭儴綾繪枃浠?錛堟湰渚嬪嵆涓猴細java Invoked錛夊嵆鍙?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>騫歌繍鐨勬槸java.lang.Runtime 綾繪彁渚涗簡exce()鏂規硶鏉ュ畬鎴愬澶栭儴鍙墽琛岀▼搴忕殑璋冪敤銆傛敞鎰忥細鍦ㄨ繖閲宔xce()鏂規硶璋冪敤鐨勫叾瀹炴槸java瑙i噴鍣ㄨ繖涓彲鎵ц紼嬪簭錛屽閮ㄧ被鏂囦歡Invoked.class鍙笉榪囨槸浣滀負java瑙i噴鍣ㄧ殑鍙傛暟鍑虹幇銆備簨瀹炰笂錛宔xce()鏂規硶榪樺彲浠ョ洿鎺ヨ皟鐢ㄥ叾瀹冪殑鍙墽琛屾枃浠訛紝鑰屼笉浠呬粎鏄痡ava瑙i噴鍣ㄣ?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>鍋囧畾灝嗚鎵ц鐨勫閮ㄧ被鏂囦歡浠嶇劧鏄笂闈㈢殑Invoked.java錛?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>閭d箞榪愯涓婅堪綾繪枃浠剁殑涓葷▼搴忥紙InvokerFromSeparateProcess.java錛夊涓嬶細</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>public class InvokerFromSeparateProcess {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>public static void main(String[] args) {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>if (args.length != 1) {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>System.err.println("Usage: java InvokerFromSeparateProcess ");</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>System.exit(1);</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>String name=鈥?WangShuangLin鈥?</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>String sex=鈥?man鈥?</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>try {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>Process p = Runtime.getRuntime().exec("java "+args[0]+name+sex);</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>catch (java.io.IOException ex) {</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>System.err.println("Problems invoking class "+args[0]+": "+ex);</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>}</TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>鐢ㄥ涓嬬殑鍛戒護琛岃繍琛屼富紼嬪簭錛歫ava InvokerFromSeparateProcess Invoked銆?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>浣犱篃璁鎬細鍙戠幇騫舵病鏈夌湅鍒拌璋冪敤鐨勫閮ㄧ被鏂囦歡Invoked.class鐨勮緭鍑恒傞棶棰樺湪浜庢柊榪涚▼錛坣ew porcess錛夌殑鏍囧噯杈撳嚭嫻侊紙standard output stream錛夊茍涓嶄細鑷姩鍦板畾鍚戝埌stdout銆備負浜嗗緱鍒板茍鏄劇ず鏂拌繘紼嬬殑杈撳嚭淇℃伅錛屾垜浠彲浠ュ埄鐢╬.getInputStream()鏉ヨ鍙栨柊榪涚▼鐨勮緭鍑轟俊鎭紝鐒跺悗鎶婅鍒扮殑淇℃伅鍙戦佸埌鏍囧噯杈撳嚭嫻侊紙standard output錛変笂銆?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14><B>鍥涖佺粨璇?/B></TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>鍒╃敤Java2涓殑鏄犺薄錛圧eflection錛堿PI瀹炵幇鍦ㄥ悓涓榪涚▼錛坧rocess錛変腑鎵ц澶栭儴綾繪枃浠剁殑鏂規硶錛屼紭鐐規槸娑堣楄祫婧愯緝灝戯紝鍥犱負瀹冧笉鎵撳紑鏂扮殑榪涚▼錛涘姛鑳藉己澶э紝鍥犱負瀹冧笉浣嗗彲浠ユ墽琛屽閮ㄧ被鏂囦歡鐨刴ain()鏂規硶錛岃屼笖榪樺彲浠ユ墽琛屽閮ㄧ被鏂囦歡鐨勫叾瀹冩柟娉曪紝鍙互闈炲父緇嗚嚧鍦板埄鐢ㄥ閮ㄧ被鏂囦歡鐨勪竴鍒囪祫婧愩傜己鐐規槸瀹冨彧鑳芥墽琛岀敤Java緙栧啓鐨勫閮ㄧ被鏂囦歡錛岃屼笉鑳芥墽琛屽叾瀹冨艦寮忕殑鍙墽琛屾枃浠訛紝濡侲XE銆丆OM絳夛紱鍏舵鏄紪紼嬭緝絎簩縐嶅艦寮忕◢寰鏉備竴鐐廣?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>鍒╃敤java.lang.Runtime 綾繪彁渚涗簡exce()鏂規硶鏉ュ畬鎴愬澶栭儴鍙墽琛岀▼搴忕殑璋冪敤鐨勬柟娉曪紝浼樼偣鏄紪紼嬬畝鍗曪紝騫朵笖鍙互榪愯涓鍒囧彲鎵ц紼嬪簭錛屽寘鎷敤鍏跺畠璇█緙栧啓鐨勭▼搴忋傜己鐐規槸娑堣楄祫婧愯緝澶氾紝鍥犱負瀹冭鎵撳紑鏂扮殑榪涚▼錛涘叾嬈℃槸瀹冨彧鑳芥暣浣撹繍琛屽閮ㄧ被鏂囦歡錛岃屼笉鑳界粏鑷村湴璁塊棶琚皟鐢ㄧ▼搴忕殑鍐呴儴璧勬簮銆?/TD></TR></TBODY></TABLE> <TABLE width="100%"> <TBODY> <TR> <TD class=a14>涓鑸儏鍐典笅錛屽鏋滆榪愯鐢↗ava緙栧啓鐨勫閮ㄧ被鏂囦歡錛岄夋嫨絎竴縐嶆柟娉曡緝涓虹伒媧匯佹伆褰擄紱濡傛灉瑕佽繍琛岀敤鍏跺畠璇█緙栧啓鐨勫彲鎵ц紼嬪簭錛岄夋嫨絎簩縐嶆柟娉曡緝涓烘柟渚褲佺洿鎺ワ紝浣嗘槸涓鑸儏鍐典笅瑕佸敖閲忛伩鍏嶈繖鏍峰仛錛屽惁鍒欏皢闄嶄綆Java紼嬪簭鐨勮法騫沖彴鎬э紝鍥犱負榪欑澶栭儴紼嬪簭涓鑸槸騫沖彴鐩稿叧鐨勩?/TD></TR></TBODY></TABLE><img src ="http://www.tkk7.com/mulinka/aggbug/11427.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mulinka/" target="_blank">欖斾箣鍗″崱</a> 2005-08-29 13:03 <a href="http://www.tkk7.com/mulinka/articles/11427.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Dynamic proxy錛堝姩鎬佷唬鐞嗘ā寮忥級http://www.tkk7.com/mulinka/articles/8724.html欖斾箣鍗″崱欖斾箣鍗″崱Fri, 29 Jul 2005 03:10:00 GMThttp://www.tkk7.com/mulinka/articles/8724.htmlhttp://www.tkk7.com/mulinka/comments/8724.htmlhttp://www.tkk7.com/mulinka/articles/8724.html#Feedback0http://www.tkk7.com/mulinka/comments/commentRss/8724.htmlhttp://www.tkk7.com/mulinka/services/trackbacks/8724.html
浣跨敤鍔ㄦ佷唬鐞嗭紝浣犲垱寤虹殑鍖呰鍣ㄧ被涓嶈姹備負鎵鏈夋柟娉曢兘浣跨敤鏄懼紡鐨勫寘瑁呭櫒錛屽垱寤虹殑瀛愮被涔熶笉瑕佹眰鍏鋒湁涓ユ牸鐨勫嚭韜紝涓よ呮柟娉曞彲浠婚変竴縐嶄綘璁や負鏈濂界殑銆備絾鏄紝鍔ㄦ佷唬鐞嗕粛鐒舵湁涓涓檺鍒躲傚綋浣犱嬌鐢ㄥ姩鎬佷唬鐞嗘椂錛岃鍖呰/鎵╁睍鐨勫璞″繀欏誨疄鐜頒竴涓帴鍙o紝璇ユ帴鍙e畾涔変簡鍑嗗鍦ㄥ寘瑁呭櫒涓嬌鐢ㄧ殑鎵鏈夋柟娉曘傝繖涓闄愬埗鐨勫畻鏃ㄦ槸榧撳姳鑹ソ鐨勮璁★紝鑰屼笉鏄負浣犲甫鏉ユ洿澶氱殑楹葷儲銆傛牴鎹粡楠岋紝姣忎釜綾婚兘鑷沖皯搴旇瀹炵幇涓涓帴鍙o紙nonconstant鎺ュ彛錛夈傝壇濂界殑鎺ュ彛鐢ㄦ硶涓嶄粎浣垮姩鎬佷唬鐞嗘垚涓哄彲鑳斤紝榪樻湁鍒╀簬紼嬪簭鐨勬ā鍧楀寲銆?BR>
2縐嶅啓invoke()
娉ㄦ剰:蹇呴』鏈塺eturn method.invoke(wrapped, args)

浠ヤ笅鍐呭涓虹▼搴忎唬鐮?

 public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable {
        Class[] paramTypes = method.getParameterTypes();
        for (int i=0; i < paramTypes.length; i++) {
            if (Tool.class.isAssignableFrom(paramTypes[i])) {
                args[i] = Tool.RATCHET;
            }
        }
        return method.invoke(wrapped, args);
    }

  public Object invoke(Object proxy, Method m, Object[] args)
           throws Throwable {
       Object result;
       try {
           System.out.println("before method " + m.getName());
           result = m.invoke(obj, args);
       } catch (InvocationTargetException e) {
           throw e.getTargetException();
       } catch (Exception e) {
           throw new RuntimeException("unexpected invocation exception: "
                  + e.getMessage());
       } finally {
           System.out.println("after method " + m.getName());
       }
       return result;
    }
}


榪愯鏁堟灉濡備笅錛?BR>before method bar
after method bar


dynamic proxy鐨勫疄鎴樻楠?BR>瀹為檯涓奷ynamic proxy鍙湁鍏抽敭浠ヤ笅鍑犱釜涓滆タ
涓銆佷笟鍔℃帴鍙o細涓涓狪nterface
浜屻佸疄鐜頒笟鍔℃帴鍙g殑綾伙細涓涓戶鎵縄nterface鐨凜lass
涓夈佽嚜宸卞啓涓涓戶鎵夸簡java.lang.reflect.InvocationHandler鐨凥andler綾?BR>鍥涖佸湪榪欎釜Handler綾諱腑瀹炵幇invoke錛堬級鏂規硶
浜斻佸湪invoke錛堬級鏂規硶涓竴瀹氳璁板緱鍐檙eturn method.invoke(wrapped, args)
鍏佽浣縃andler鍜岃嚜宸辯殑涓氬姟鎺ュ彛鍏寵仈榪樼殑鍐欎笅闈㈢殑浠g爜錛堜竴鑸啓鍦℉andler綾諱腑錛?BR>
浠ヤ笅鍐呭涓虹▼搴忎唬鐮?

    public static Object newInstance(Object obj) {
       return java.lang.reflect.Proxy.newProxyInstance(obj.getClass()
              .getClassLoader(), obj.getClass().getInterfaces(),new Handler(obj));
    }

榪欐牱榪斿洖鐨勫氨鏄粡榪囦唬鐞嗙殑瀵硅薄浜嗭紙鎶婂師瀵硅薄鍜孒andler緇戝畾鍒頒竴璧鳳級

dynamic proxy鐨勫吀鍨嬪簲鐢ㄣ婁嬌鐢↗AVA涓殑鍔ㄦ佷唬鐞嗗疄鐜版暟鎹簱榪炴帴姹犮?BR>
dynamic proxy鍦↗DBC涓婄殑搴旂敤
IBM鏂囩珷:
銆婁嬌鐢↗AVA涓殑鍔ㄦ佷唬鐞嗗疄鐜版暟鎹簱榪炴帴姹犮?/A>

]]>
Java涓璗hreadLocal鐨勮璁′笌浣跨敤http://www.tkk7.com/mulinka/articles/7377.html欖斾箣鍗″崱欖斾箣鍗″崱Fri, 08 Jul 2005 08:54:00 GMThttp://www.tkk7.com/mulinka/articles/7377.htmlhttp://www.tkk7.com/mulinka/comments/7377.htmlhttp://www.tkk7.com/mulinka/articles/7377.html#Feedback0http://www.tkk7.com/mulinka/comments/commentRss/7377.htmlhttp://www.tkk7.com/mulinka/services/trackbacks/7377.htmlJava涓璗hreadLocal鐨勮璁′笌浣跨敤
鍘熸枃鍑哄錛?A title=鍘熸枃鍑哄 >http://www.huawei.org.cn/news/article_show.asp?id=27413

 
銆銆鏃╁湪Java 1.2鎺ㄥ嚭涔嬫椂錛孞ava騫沖彴涓氨寮曞叆浜嗕竴涓柊鐨勬敮鎸侊細java.lang.ThreadLocal錛岀粰鎴戜滑鍦ㄧ紪鍐欏綰跨▼紼嬪簭鏃舵彁渚涗簡涓縐嶆柊鐨勯夋嫨銆備嬌鐢ㄨ繖涓伐鍏風被鍙互寰堢畝媧佸湴緙栧啓鍑轟紭緹庣殑澶氱嚎紼嬬▼搴忥紝铏界劧ThreadLocal闈炲父鏈夌敤錛屼絾鏄技涔庣幇鍦ㄤ簡瑙e畠銆佷嬌鐢ㄥ畠鐨勬湅鍙嬭繕涓嶅銆?BR>銆銆
銆銆ThreadLocal鏄粈涔?/STRONG>

銆銆ThreadLocal鏄粈涔堝憿錛熷叾瀹濼hreadLocal騫墮潪鏄竴涓嚎紼嬬殑鏈湴瀹炵幇鐗堟湰錛屽畠騫朵笉鏄竴涓猅hread錛岃屾槸thread local variable錛堢嚎紼嬪眬閮ㄥ彉閲忥級銆備篃璁告妸瀹冨懡鍚嶄負ThreadLocalVar鏇村姞鍚堥傘傜嚎紼嬪眬閮ㄥ彉閲忥紙ThreadLocal錛夊叾瀹炵殑鍔熺敤闈炲父綆鍗曪紝灝辨槸涓烘瘡涓涓嬌鐢ㄨ鍙橀噺鐨勭嚎紼嬮兘鎻愪緵涓涓彉閲忓肩殑鍓湰錛屾槸姣忎竴涓嚎紼嬮兘鍙互鐙珛鍦版敼鍙樿嚜宸辯殑鍓湰錛岃屼笉浼氬拰鍏跺畠綰跨▼鐨勫壇鏈啿紿併備粠綰跨▼鐨勮搴︾湅錛屽氨濂藉儚姣忎竴涓嚎紼嬮兘瀹屽叏鎷ユ湁璇ュ彉閲忋傜嚎紼嬪眬閮ㄥ彉閲忓茍涓嶆槸Java鐨勬柊鍙戞槑錛屽湪鍏跺畠鐨勪竴浜涜璦緙栬瘧鍣ㄥ疄鐜幫紙濡侷BM XL FORTRAN錛変腑錛屽畠鍦ㄨ璦鐨勫眰嬈℃彁渚涗簡鐩存帴鐨勬敮鎸併傚洜涓篔ava涓病鏈夋彁渚涘湪璇█灞傛鐨勭洿鎺ユ敮鎸侊紝鑰屾槸鎻愪緵浜嗕竴涓猅hreadLocal鐨勭被鏉ユ彁渚涙敮鎸侊紝鎵浠ワ紝鍦↗ava涓紪鍐欑嚎紼嬪眬閮ㄥ彉閲忕殑浠g爜鐩稿姣旇緝絎ㄦ嫏錛岃繖涔熻鏄嚎紼嬪眬閮ㄥ彉閲忔病鏈夊湪Java涓緱鍒板緢濂界殑鏅強鐨勪竴涓師鍥犲惂銆?BR>銆銆
銆銆ThreadLocal鐨勮璁?BR>銆銆
銆銆棣栧厛鐪嬬湅ThreadLocal鐨勬帴鍙o細
銆銆
銆銆Object get() ; // 榪斿洖褰撳墠綰跨▼鐨勭嚎紼嬪眬閮ㄥ彉閲忓壇鏈?protected Object initialValue(); // 榪斿洖璇ョ嚎紼嬪眬閮ㄥ彉閲忕殑褰撳墠綰跨▼鐨勫垵濮嬪?BR>銆銆void set(Object value); // 璁劇疆褰撳墠綰跨▼鐨勭嚎紼嬪眬閮ㄥ彉閲忓壇鏈殑鍊?BR>銆銆
銆銆ThreadLocal鏈?涓柟娉曪紝鍏朵腑鍊煎緱娉ㄦ剰鐨勬槸initialValue()錛岃鏂規硶鏄竴涓猵rotected鐨勬柟娉曪紝鏄劇劧鏄負浜嗗瓙綾婚噸鍐欒岀壒鎰忓疄鐜扮殑銆傝鏂規硶榪斿洖褰撳墠綰跨▼鍦ㄨ綰跨▼灞閮ㄥ彉閲忕殑鍒濆鍊鹼紝榪欎釜鏂規硶鏄竴涓歡榪熻皟鐢ㄦ柟娉曪紝鍦ㄤ竴涓嚎紼嬬1嬈¤皟鐢╣et()鎴栬卻et(Object)鏃舵墠鎵ц錛屽茍涓斾粎鎵ц1嬈°俆hreadLocal涓殑紜疄瀹炵幇鐩存帴榪斿洖涓涓猲ull錛?BR>銆銆
銆銆
protected Object initialValue() { return null; }
銆銆
銆銆ThreadLocal鏄浣曞仛鍒頒負姣忎竴涓嚎紼嬬淮鎶ゅ彉閲忕殑鍓湰鐨勫憿錛熷叾瀹炲疄鐜扮殑鎬濊礬寰堢畝鍗曪紝鍦═hreadLocal綾諱腑鏈変竴涓狹ap錛岀敤浜庡瓨鍌ㄦ瘡涓涓嚎紼嬬殑鍙橀噺鐨勫壇鏈傛瘮濡備笅闈㈢殑紺轟緥瀹炵幇錛?BR>銆銆
銆銆
public class ThreadLocal
銆銆{
銆銆private Map values = Collections.synchronizedMap(new HashMap());
銆銆public Object get()
銆銆{
銆銆Thread curThread = Thread.currentThread();
銆銆Object o = values.get(curThread);
銆銆if (o == null && !values.containsKey(curThread))
銆銆{
銆銆o = initialValue();
銆銆values.put(curThread, o);
銆銆}
銆銆return o;
銆銆}
銆銆
銆銆public void set(Object newValue)
銆銆{
銆銆values.put(Thread.currentThread(), newValue);
銆銆}
銆銆
銆銆public Object initialValue()
銆銆{
銆銆return null;
銆銆}
銆銆}
銆銆
銆銆褰撶劧錛岃繖騫朵笉鏄竴涓伐涓氬己搴︾殑瀹炵幇錛屼絾JDK涓殑ThreadLocal鐨勫疄鐜版諱綋鎬濊礬涔熺被浼間簬姝ゃ?BR>銆銆
銆銆ThreadLocal鐨勪嬌鐢?BR>銆銆
銆銆濡傛灉甯屾湜綰跨▼灞閮ㄥ彉閲忓垵濮嬪寲鍏跺畠鍊鹼紝閭d箞闇瑕佽嚜宸卞疄鐜癟hreadLocal鐨勫瓙綾誨茍閲嶅啓璇ユ柟娉曪紝閫氬父浣跨敤涓涓唴閮ㄥ尶鍚嶇被瀵筎hreadLocal榪涜瀛愮被鍖栵紝姣斿涓嬮潰鐨勪緥瀛愶紝SerialNum綾諱負姣忎竴涓被鍒嗛厤涓涓簭鍙鳳細
銆銆
銆銆
public class SerialNum
銆銆{
銆銆// The next serial number to be assigned
銆銆
銆銆private static int nextSerialNum = 0;
銆銆private static ThreadLocal serialNum = new ThreadLocal()
銆銆{
銆銆protected synchronized Object initialValue()
銆銆{
銆銆return new Integer(nextSerialNum++);
銆銆}
銆銆};
銆銆
銆銆public static int get()
銆銆{
銆銆return ((Integer) (serialNum.get())).intValue();
銆銆}
銆銆}
銆銆
銆銆SerialNum綾葷殑浣跨敤灝嗛潪甯稿湴綆鍗曪紝鍥犱負get()鏂規硶鏄痵tatic鐨勶紝鎵浠ュ湪闇瑕佽幏鍙栧綋鍓嶇嚎紼嬬殑搴忓彿鏃訛紝綆鍗曞湴璋冪敤錛?BR>銆銆
銆int serial = SerialNum.get();
銆銆
銆銆鍗沖彲銆?BR>銆銆
銆銆鍦ㄧ嚎紼嬫槸媧誨姩鐨勫茍涓擳hreadLocal瀵硅薄鏄彲璁塊棶鐨勬椂錛岃綰跨▼灝辨寔鏈変竴涓埌璇ョ嚎紼嬪眬閮ㄥ彉閲忓壇鏈殑闅愬惈寮曠敤錛屽綋璇ョ嚎紼嬭繍琛岀粨鏉熷悗錛岃綰跨▼鎷ユ湁鐨勬墍浠ョ嚎紼嬪眬閮ㄥ彉閲忕殑鍓湰閮藉皢澶辨晥錛屽茍絳夊緟鍨冨溇鏀墮泦鍣ㄦ敹闆嗐?BR>銆銆
銆銆ThreadLocal涓庡叾瀹冨悓姝ユ満鍒剁殑姣旇緝
銆銆ThreadLocal鍜屽叾瀹冨悓姝ユ満鍒剁浉姣旀湁浠涔堜紭鍔垮憿錛烼hreadLocal鍜屽叾瀹冩墍鏈夌殑鍚屾鏈哄埗閮芥槸涓轟簡瑙e喅澶氱嚎紼嬩腑鐨勫鍚屼竴鍙橀噺鐨勮闂啿紿侊紝鍦ㄦ櫘閫氱殑鍚屾鏈哄埗涓紝鏄氳繃瀵硅薄鍔犻攣鏉ュ疄鐜板涓嚎紼嬪鍚屼竴鍙橀噺鐨勫畨鍏ㄨ闂殑銆傝繖鏃惰鍙橀噺鏄涓嚎紼嬪叡浜殑錛屼嬌鐢ㄨ繖縐嶅悓姝ユ満鍒墮渶瑕佸緢緇嗚嚧鍦板垎鏋愬湪浠涔堟椂鍊欏鍙橀噺榪涜璇誨啓錛屼粈涔堟椂鍊欓渶瑕侀攣瀹氭煇涓璞★紝浠涔堟椂鍊欓噴鏀捐瀵硅薄鐨勯攣絳夌瓑寰堝銆傛墍鏈夎繖浜涢兘鏄洜涓哄涓嚎紼嬪叡浜簡璧勬簮閫犳垚鐨勩俆hreadLocal灝變粠鍙︿竴涓搴︽潵瑙e喅澶氱嚎紼嬬殑騫跺彂璁塊棶錛孴hreadLocal浼氫負姣忎竴涓嚎紼嬬淮鎶や竴涓拰璇ョ嚎紼嬬粦瀹氱殑鍙橀噺鐨勫壇鏈紝浠庤岄殧紱諱簡澶氫釜綰跨▼鐨勬暟鎹紝姣忎竴涓嚎紼嬮兘鎷ユ湁鑷繁鐨勫彉閲忓壇鏈紝浠庤屼篃灝辨病鏈夊繀瑕佸璇ュ彉閲忚繘琛屽悓姝ヤ簡銆俆hreadLocal鎻愪緵浜嗙嚎紼嬪畨鍏ㄧ殑鍏變韓瀵硅薄錛屽湪緙栧啓澶氱嚎紼嬩唬鐮佹椂錛屽彲浠ユ妸涓嶅畨鍏ㄧ殑鏁翠釜鍙橀噺灝佽榪汿hreadLocal錛屾垨鑰呮妸璇ュ璞$殑鐗瑰畾浜庣嚎紼嬬殑鐘舵佸皝瑁呰繘ThreadLocal銆?BR>銆銆
銆銆鐢變簬ThreadLocal涓彲浠ユ寔鏈変換浣曠被鍨嬬殑瀵硅薄錛屾墍浠ヤ嬌鐢═hreadLocal get褰撳墠綰跨▼鐨勫兼槸闇瑕佽繘琛屽己鍒剁被鍨嬭漿鎹€備絾闅忕潃鏂扮殑Java鐗堟湰錛?.5錛夊皢妯$増鐨勫紩鍏ワ紝鏂扮殑鏀寔妯$増鍙傛暟鐨凾hreadLocal綾誨皢浠庝腑鍙楃泭銆備篃鍙互鍑忓皯寮哄埗綾誨瀷杞崲錛屽茍灝嗕竴浜涢敊璇鏌ユ彁鍓嶅埌浜嗙紪璇戞湡錛屽皢涓瀹氱▼搴﹀湴綆鍖朤hreadLocal鐨勪嬌鐢ㄣ?BR>銆銆
銆銆鎬葷粨
銆銆褰撶劧ThreadLocal騫朵笉鑳芥浛浠e悓姝ユ満鍒訛紝涓よ呴潰鍚戠殑闂棰嗗煙涓嶅悓銆傚悓姝ユ満鍒舵槸涓轟簡鍚屾澶氫釜綰跨▼瀵圭浉鍚岃祫婧愮殑騫跺彂璁塊棶錛屾槸涓轟簡澶氫釜綰跨▼涔嬮棿榪涜閫氫俊鐨勬湁鏁堟柟寮忥紱鑰孴hreadLocal鏄殧紱誨涓嚎紼嬬殑鏁版嵁鍏變韓錛屼粠鏍規湰涓婂氨涓嶅湪澶氫釜綰跨▼涔嬮棿鍏變韓璧勬簮錛堝彉閲忥級錛岃繖鏍峰綋鐒朵笉闇瑕佸澶氫釜綰跨▼榪涜鍚屾浜嗐傛墍浠ワ紝濡傛灉浣犻渶瑕佽繘琛屽涓嚎紼嬩箣闂磋繘琛岄氫俊錛屽垯浣跨敤鍚屾鏈哄埗錛涘鏋滈渶瑕侀殧紱誨涓嚎紼嬩箣闂寸殑鍏變韓鍐茬獊錛屽彲浠ヤ嬌鐢═hreadLocal錛岃繖灝嗘瀬澶у湴綆鍖栦綘鐨勭▼搴忥紝浣跨▼搴忔洿鍔犳槗璇匯佺畝媧併?nbsp;


]]>
主站蜘蛛池模板: 一区二区三区无码视频免费福利| 国产精品亚洲二区在线| 麻豆精品不卡国产免费看| 亚洲欧洲中文日韩av乱码| 国产99视频精品免费视频76 | 国内精自视频品线六区免费| 亚洲国产第一页www| 99久久免费中文字幕精品| 久久精品国产亚洲av麻豆小说 | 亚洲AV永久无码精品水牛影视| 99精品视频免费| 亚洲国产精品va在线播放| 久草免费手机视频| 97亚洲熟妇自偷自拍另类图片| 久久久久久精品免费看SSS| 91亚洲自偷在线观看国产馆| 国产精品成人免费视频网站京东| 亚洲中文字幕无码中文| 国产精品无码一二区免费| 一边摸一边爽一边叫床免费视频| 亚洲国产另类久久久精品小说| 亚洲a一级免费视频| 亚洲大香人伊一本线| 永久黄网站色视频免费| 日本在线观看免费高清| 亚洲AV无码成人精品区蜜桃| 久久久久久精品免费免费自慰| 亚洲成熟丰满熟妇高潮XXXXX| 精品亚洲成α人无码成α在线观看| 中文无码成人免费视频在线观看| 亚洲午夜在线一区| 国产免费观看黄AV片| 国产成人久久AV免费| 亚洲午夜无码久久久久软件| 亚洲理论在线观看| 国产大片91精品免费观看男同| 亚洲AV永久无码精品网站在线观看 | 亚洲精品国产综合久久一线| 91成人免费观看| 亚洲av第一网站久章草| 亚洲av无码国产精品色午夜字幕 |