ת£ºÌ½Ë÷ Java ͬ²½»úÖÆ
̽Ë÷ Java ͬ²½»úÖÆ http://www.ibm.com/developerworks/cn/java/j-lo-synchronized/ Monitor Object ²¢·¢Ä£Ê½ÔÚ Java ͬ²½»úÖÆÖеÄʵÏÖ ¼¶±ð£º Öм¶ Àî Èýºì (lisanh@cn.ibm.com), ¸ß¼¶Èí¼þ¹¤³Ìʦ, IBM 2008 Äê 12 Ô 26 ÈÕ
±¾ÎÄ´ÓµäÐ굀 Monitor Object Éè¼ÆÄ£Ê½ÈëÊÖ£¬´ÓÒ»¸öеÄÊӽǣ¬À´Ì½ÌÖ Java ÓïÑÔµÄͬ²½»úÖÆ¡£ ±¾ÎĽ«´ÓÁ½¸ö·½Ãæ½øÐвûÊö:
ʹÓà C++ ÓïÑÔÀ´ÃèÊö Monitor Object Éè¼ÆÄ£Ê½¡£Java ¶ÔÓÚÕâÑùÒ»¸öµäÐ͵Äģʽ×öÁ˺ܺõÄÓïÑÔ²ãÃæµÄ·â×°£¬Òò´Ë¶ÔÓÚ Java µÄ¿ª·¢ÕßÀ´Ëµ£¬ºÜ¶à¹ØÓÚ¸Ãģʽ±¾ÉíµÄ¶«Î÷±»ÆÁ±ÎµôÁË¡£±¾ÎÄÊÔͼʹÓà Native C++ ÓïÑÔ£¬°ïÖú¶ÁÕß´Ó±¾ÖÊÉÏ¶Ô Monitor object Éè¼ÆÄ£Ê½ÓÐÒ»¸ö¸üÈ«ÃæµÄÈÏʶ¡£
½áºÏ C++ °æ±¾µÄ Monitor Object Éè¼ÆÄ£Ê½£¬ÒýÁì¶ÁÕß¶ÔÓÚ Java ͬ²½»úÖÆÓÐÒ»¸ö¸üÉî¿ÌµÄÈÏʶ£¬°ïÖú¶ÁÕßÕýÈ·ÓÐЧµØÊ¹Óà Java ͬ²½»úÖÆ¡£ Ô¤±¸ÖªÊ¶ ÔÚ¿ªÊ¼ÕýʽÌÖÂÛ֮ǰ£¬ÐèÒªÁ˽âһЩԤ±¸ÖªÊ¶¡£ ʲôÊÇ RAII ×ÊÔ´»ñÈ¡¼´³õʼ»¯£¨RAII, Resource Acquisition Is Initialization£©ÊÇÖ¸£¬ÔÚÒ»¸ö¶ÔÏóµÄ¹¹Ô캯ÊýÖлñµÃ×ÊÔ´ , ²¢ÇÒÔڸöÔÏóµÄÎö¹¹º¯ÊýÖÐÊÍ·ÅËü¡£Õâ¸ö×ÊÔ´¿ÉÒÔÊǶÔÏó¡¢ÄÚ´æ¡¢Îļþ¾ä±ú»òÕ߯äËüÀàÐÍ¡£ÊµÏÖÕâÖÖ¹¦ÄܵÄÀ࣬ÎÒÃǾÍ˵Ëü²ÉÓÃÁË×ÊÔ´»ñÈ¡¼´³õʼ»¯£¨RAII£©µÄ·½Ê½¡£ RAII ÊÇÒ»ÖֺܵäÐ͵ÄÓïÑÔ¹ßÓ÷¨£¬±»ºÜ¶àµÄ OO ÓïÑÔËùʹÓã¬ÏÂÃæÊÇ C++ µÄÀý×Ó¡£ Çåµ¥ 1. RAII Using C++
class Raii {
public:
// Store a pointer to the resource and initialize the resource.
Raii(Resource &resource)
:m_pRes (&resource){
m_pRes->initialize ();
}
// Close the resource when the execution goes out of scope.
virtual ~Raii() {
m_pRes->close ();
}
private:
// Pointer to the resource we're managing.
Resource *m_pRes;
// ... maybe need disallow copying and assignment ...
Ïà¹ØÎĵµ£º
ÒýÓÃ
1.µã “window”-> "Preferences" -> "Java" -> "Installed JRES"
2.´Ëʱ"Installed JRES"ÓÒ±ßÊÇÁÐ±í´°¸ñ£¬ÁгöÁËϵͳÖÐµÄ JRE »·¾³£¬Ñ¡ÔñÄãµÄJRE£¬È»ºóµã±ßÉ쵀 "Edit..."£¬ »á³öÏÖÒ»¸ö´°¿Ú(Edit JRE)
3.Ñ¡ÖÐrt.jarÎļþµÄÕâÒ»Ï“c:\program files\java\jre_1.5.0_06\lib\rt.jar” ......
ÊýÄêǰ£¬µ±ºÍÒ»¸öÈí¼þÍŶÓÒ»ÆðÓà Java ÓïÑÔ±àдһ¸öÓ¦ÓóÌÐòʱ£¬ÎÒÌå»áµ½±ÈÒ»°ã³ÌÐòÔ±¶àÖªµÀÒ»µã¹ØÓÚ Java ¶ÔÏóÐòÁл¯µÄ֪ʶËù´øÀ´µÄºÃ´¦¡£
´óÔ¼Ò»Äêǰ£¬Ò»¸ö¸ºÔð¹ÜÀíÓ¦ÓóÌÐòËùÓÐÓû§ÉèÖõĿª·¢ÈËÔ±£¬¾ö¶¨½«Óû§ÉèÖô洢ÔÚÒ»¸ö Hashtable ÖУ¬È»ºó½«Õâ¸ö Hashtable ÐòÁл¯µ½´ÅÅÌ£¬ÒÔ±ã³Ö¾Ã»¯¡£µ±Óû§¸ü¸ÄÉèÖÃʱ£¬±ãÖØÐ½« ......
µÚ8Õ ¶àÏß³Ì
±¾ÕÂĿ¼
8.1¡¡²¢·¢ÐÔ¡¢Ïß³ÌÓë¶àÏß³Ì
8.2¡¡»ñµÃÏß³ÌÌåµÄÁ½ÖÖ·½·¨
8.3¡¡Ï̵߳÷¶È
8.1¡¡²¢·¢ÐÔ¡¢Ïß³ÌÓë¶àÏß³Ì
Ò»¡¢²¢·¢ÐԵĸÅÄî
ĿǰµÄ¼ÆËã»ú²Ù×÷ϵͳ´ó¶àÖ§³Ö²¢·¢ÐÔ£¬¼´¶à¸ö½ø³ÌÊǽ»²æÖ´Ðеģ¬Ò»°ã³Æ¶à½ø³ÌΪϵͳ¼¶²¢·¢¡£
JavaÓïÑÔͨ¹ý³ÌÐò¿ØÖÆÁ÷À´Ö´ÐгÌÐò£¬µ¥¸öµÄÒ»¶Î³ÌÐòÖ´ÐпØÖÆÁ÷³ÆÎªÏ̡߳£
¶àÏß ......
package com.ghb.crp.file;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutput ......
ÕâÀï±ÊÕß½éÉÜÒ»Öֺܳ£Óã¬Ò²±È½ÏרҵµÄȨÏÞ¿ØÖÆË¼Â·¡£ÕâÀïÓÃjavaÓïÑÔÃèÊö£¬Æäʵ¶¼²î²»¶àµÄ¡£Òª»»³ÉÆäËûµÄÓïÑÔÖ÷£¬×Ô¼º×ªÒ»Ï¾ͿÉÒÔÁË¡£ÎªÁË·½±ãÆð¼û£¬ÎÒÃÇÕâÀﶨÒåa^bΪ£ºaµÄb´Î·½¡£ÕâÀÎÒÃÇΪÿһ¸ö²Ù×÷É趨һ¸öΨһµÄÕûÊýÖµ£¬±ÈÈ磺
ɾ³ý£Á£££0
Ð޸ģÁ£££1
Ìí¼Ó£Á£££2
ɾ³ý£Â£££3
Ð޸죣£ ......