¡¡¡¡ÔÚ±àд¶àÏ̴߳úÂëµÄʱºò¾³£·¢Éú¶à¸öÏ̵߳ȴýÒ»¸öʼþµÄÇé¿ö¡£ÕâÖÖÇé¿ö¶à·¢ÉúÓÚ¶à¸öÏß³ÌÔÚͬ²½·½·¨»òÕßͬ²½¿éÄÚµ÷ÓÃwait·½·¨µÈ´ýͬһ¸ö±»ËøסµÄ¶ÔÏó¡£µ±ÁíÒ»¸öËøס¸Ã¶ÔÏóµÄÏ̴߳Óͬ²½·½·¨»òÕßͬ²½¿éÖе÷ÓÃnotify»òÕßnotifyAll·½·¨Ê±ÕâЩµÈ´ýÏ̱߳»»½ÐÑ¡£notifyµ÷Óýö½ö»½ÐÑÒ»¸öỊ̈߳¬Òò´ËÈç¹ûÓжà¸öÏß³ÌÕý´¦Óڵȴý״̬£¬ÄÇô²»»áÓжÔËøµÄ¾ºÕù¡£ÁíÒ»·½Ã棬notifyAllµ÷Óû½ÐÑËùÓеĵȴýÏ̶߳øÔì³É¾ºÕù£¬È»¶øÖ»ÓÐÒ»¸öÏß³ÌÄܹ»µÃµ½Ëø£¬ÆäËüµÄ¶¼»á±»×èÈû¡£
¡¡¡¡µ±¶à¸öÏ̴߳¦Óڵȴý״̬ʱµÄÎÊÌâÊǵ±µ÷ÓÃnotify»òÕßnotifyAll·½·¨ºóÄÄÒ»¸öÏ߳̽«ÔËÐУ¿ºÜ¶à³ÌÐòÔ±²»ÕýÈ·µÄ¼Ù¶¨´æÔÚÒ»ÖÖÔ¤¶¨ÒåµÄ˳Ðò±íÃ÷Ïß³ÌÈçºÎ±»»½ÐÑ¡£Ò»Ð©ÈÏΪÊǸßÓÅÏȼ¶µÄÏß³ÌÊ×Ïȱ»»½ÐÑ£¬ÁíһЩ¿ÉÄÜÈÏΪÊǵȴýÁË×ʱ¼äµÄÏß³ÌÊ×Ïȱ»»½ÐÑ¡£²»ÐÒµÄÊÇÉÏÃæµÄ¼ÙÉ趼ÊDz»¶ÔµÄ¡£ÔÚÕâЩÇé¿öÏ£¬ÄĸöÏ̱߳»»½ÐÑÊDz»È·¶¨µÄ£¬Ò²ÐíÊÇ×î¸ßÓÅÏȼ¶µÄỊ̈߳¬Ò²ÐíÊǵȴý×µÄỊ̈߳¬µ«ÊÇûÓб£Ö¤¡£
¡¡¡¡Ï̵߳ÄÓÅÏȼ¶²»Äܾö¶¨ËüÊÇ·ñ±»»½ÐÑ£¨ÔÚʹÓÃnotify·½·¨µÄÇé¿öÏ£©»òÕßÔÚ¶àÏ̻߳·¾³ÏµĻ½ÐÑ˳Ðò£¨ÔÚʹÓÃnotifyAll·½·¨µÄÇé¿öÏ£©¡£Òò´Ë£¬Òò´ËÄãÓÀÔ¶²»Ó¦¸Ã¼ÙÉèÏ̵߳Ļ½ÐÑ˳Ðò¡£ÁíÍ⣬ÄãÒ²ÓÀÔ¶²»Ó¦¸Ã¶ÔÇÀÕ¼¹ý³ÌÖеÄÏ̵߳÷¶È×öÈκμÙÉè¡£Ï̵߳÷¶ÈÊÇʵÏÖÏà¹ØµÄ£¨implementation-dependent£©£¬²»Í¬µÄƽ̨µÄµ÷¶È»úÖÆÊDz»Í¬µÄ¡£Èç¹ûÄãÏëÄãµÄ³ÌÐò¾ßÓпÉÒÆÖ²ÐԾͲ»Ó¦¸Ã×öÕâÑùµÄ²»Ã÷ÖǵļÙÉè¡£
¡¡¡¡ÁíÍ⣬notifyAllºÍnotify·½·¨Ã»ÓÐÌṩ»½Ðѵȴý½ø³ÌµÄÈ·¶¨Ë³Ðò£¬¾ßÌåµÄ˳ÐòÊÇÒÀÀµJVMµÄ£¬²¢ÇÒnotifyAllËùÄܱ£Ö¤µÄÊÂÇé²»³¬¹ý»½ÐÑËùÓеĵȴýÏ̡߳£Õâ¸ö×´¿öʹµÃµ±ÄãÏëÒÔijÖÖÌض¨µÄ˳Ðò»½ÐѶà¸öÏß³Ìʱ»á³öÏÖÎÊÌâ¡£
¡¡¡¡ÓÐÁ½ÖÖ°ì·¨´ïµ½¿ØÖÆÏ̵߳Ļ½ÐÑ˳Ðò:
¡¡¡¡1¡¢Ê¹Óþ«È·»½ÐÑģʽ
¡¡¡¡
¡¡¡¡£¨Specific notification pattern£©
¡¡¡¡2¡¢Ê¹ÓÃʵÏÖÁËʵʱ¹æ·¶µÄJVM£¨RTSJ£¬Real-Time Specification for Java£©£¨ÒëÕß×¢£ºÕâÆäʵ²»Ó¦¸ÃËãÒ»Öֺõķ½·¨£¬Õâ¼Ó´óÁ˶ÔÌض¨JVMµÄÒÀÀµ£¬´òÆÆÁË¿ÉÒÆÖ²ÐÔ£©
¡¡¡¡¾«È·»½ÐÑģʽÓÉTom Cargill¿ª·¢£¬Ïêϸ˵Ã÷ÁËÈçºÎ¿ØÖƵ÷ÓÃnotifyºÍnotifyAllʱµÄÏ̵߳Ļ½ÐÑ˳Ðò¡£Õâ¸öʵÏÖÊÇͨ¹ý¶ÔÐèÒª±»Ò»Æð»½ÐѵÄÿ¸öÏ̻߳òÕßÿһÌ×Ïß³ÌÉèÖÃÒ»¸öµ¥¶ÀµÄËø´ïµ½µÄ¡£Í¨¹ý¶ÔÌض¨µÄËø½øÐÐÊͷŶø´ïµ½¿É¶¨ÒåµÄ֪ͨ˳Ðò¡£
¡¡¡¡Èç¹ûʵÏÖºÏÊÊ£¬ÄÇôÕâÖÖģʽµÄÖ´Ðдú¼ÛÊÇ×îСµÄ¡£È»¶ø²»¿É±ÜÃâµÄÒªÔö¼Ó±àÂëµÄ¸´ÔÓÐÔ£¬µ«ÊÇÕâ¸ö¸´ÔÓÐÔ¿ÉÒÔͨ¹ýÄãµÃµ½µÄ¿ØÖÆÐÔµÖÏûµô£¬Èç¹ûÄãÐèÒªÕâÑùµÄ¿ØÖÆ£¬Äã¿ÉÒÔ¿¼ÂÇʵÏÖÕâ¸öģʽ¡£
¡¡¡¡RTSJ¸Ä±äÁËijЩjavaÓïÒåµÄ±ê×¼ÐÐΪ¡£ÆäÖÐÖ®Ò»¾ÍÊÇÈ·±£µÈ´ýḬ̈߳´ÕÕÓÅÏȼ¶ÅÅÐò¡£Òò´Ëµ±¶à¸öÏ̴߳¦Óڵȴý״̬¶øµ÷ÓÃÁËnotify»òÕßnotifyAll£¬ÄÇô¾ßÓÐ×î¸ßÓÅÏȼ¶µÄÄǸö½«Ê×ÏÈÖ´ÐУ¬ÆäËüµÄ¼ÌÐøµÈ´ý¡£
¡¡¡¡Í¨³££¬Õâ²»ÊÇÍƼöµÄ×ö·¨£¬³ý·ÇÊǽøÐÐʵʱ±à³Ì¡£ÒѾÓм¸ÖÖ²»Í¬µÄÕÛÖÔ·½°¸Ê¹µÃjava¿ÉÒÔ½øÐÐʵʱ±à³Ì¡£´´½¨RTSJµÄ×îÖØÒªµÄÒ»¸öÔÔò¾ÍÊǼ°Ê±ÐÔ±ÈÖ´ÐÐËٶȸüÖØÒª£¡