ת£ºÌ½Ë÷ 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” ......
JVMÄÚ´æµÄÉèÖõÄÔÀí
ĬÈϵÄjavaÐéÄâ»úµÄ´óС±È½ÏС£¬ÔÚ¶Ô´óÊý¾Ý½øÐд¦Àíʱjava¾Í»á±¨´í£ºjava.lang.OutOfMemoryError¡£
ÉèÖÃjvmÄÚ´æµÄ·½·¨£¬¶ÔÓÚµ¥¶ÀµÄ.class£¬¿ÉÒÔÓÃÏÂÃæµÄ·½·¨¶ÔTestÔËÐÐʱµÄjvmÄÚ´æ½øÐÐÉèÖá£
java -Xms64m -Xmx256m Test
-XmsÊÇÉèÖÃÄÚ´æ³õʼ»¯µÄ´óС
-XmxÊÇÉèÖÃ×î´óÄܹ»Ê¹ÓÃÄÚ´æµÄ´óС£¨ ......
(1)Timer.schedule(TimerTask task,Date time)°²ÅÅÔÚÖÆ¶¨µÄʱ¼äÖ´ÐÐÖ¸¶¨µÄÈÎÎñ¡£
(2)Timer.schedule(TimerTask task,Date firstTime ,long period)°²ÅÅÖ¸¶¨µÄÈÎÎñÔÚÖ¸¶¨µÄʱ¼ä¿ªÊ¼½øÐÐÖØ¸´µÄ¹Ì¶¨ÑÓ³ÙÖ´ÐУ®
(3)Timer.schedule(TimerTask task,long delay)°²ÅÅÔÚÖ¸¶¨ÑÓ³ÙºóÖ´ÐÐÖ¸¶¨µÄÈÎÎñ£®
(4)Timer.schedule(TimerTask ......
1£© ¾ßÌåÀ಻ÊÇÓÃÀ´¼Ì³ÐµÄ¡£Äܱ»¼Ì³ÐµÄÒ»¶¨ÊdzéÏóÀà¡£
Èç¹ûÔÚÒ»¸öÔʼµÄÉè¼ÆÀÓÐÁ½¸ö¾ßÌåÀ࣬ÀàAºÍÀàB,ÀàBÊÇÀàAµÄ×ÓÀ࣬ÄÇô×îºÃµÄÐ޸ķ½°¸ÊÇ£º
½¨Á¢Ò»¸ö³éÏ󣨻òÕß½Ó¿Ú£©C£¬È»ºóÈÃÀàAºÍÀàB³ÉΪÀàCµÄ×ÓÀà
2)³éÏóÀàÓ¦¾¡¿ÉÄܵÄÓµÓжàµÄ¹²Í¬´úÂë
Ò»¸ö¶ÔÏó´Ó³¬Àà¼Ì³Ð¶øÀ´µÄ´úÂ룬ÔÚ²»Ê¹ÓÃʱ²»»áÔì³É¶Ô×ÊÔ´µÄÀ ......