ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
µÚÈýµç×ÓÊé ·µ»Ø±¾ÊéĿ¼ ¼ÓÈëÊéÇ© ÎÒµÄÊé¼Ü ÎÒµÄÊéÇ© TXTÈ«±¾ÏÂÔØ ¡ºÊղص½ÎÒµÄä¯ÀÀÆ÷¡»

Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ119²¿·Ö

¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡


¡¡¡¡¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡s¡£length£»¡¡i£«£«£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡s£§i£§¡£start£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡class¡¡ObserverL¡¡implements¡¡ActionListener¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡public¡¡void¡¡actionPerformed£¨ActionEvent¡¡e£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡numObservers£»¡¡i£«£«£©¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡Watcher2£¨Sharing2¡£this£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡Sharing2¡¡applet¡¡=¡¡new¡¡Sharing2£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡This¡¡isn't¡¡an¡¡applet£»¡¡so¡¡set¡¡the¡¡flag¡¡and¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡produce¡¡the¡¡parameter¡¡values¡¡from¡¡args£º¡¡¡¡

¡¡¡¡¡¡¡¡applet¡£isApplet¡¡=¡¡false£»¡¡¡¡

¡¡¡¡¡¡¡¡applet¡£numCounters¡¡=¡¡¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡£¨args¡£length¡¡==¡¡0¡¡£¿¡¡5¡¡£º¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Integer¡£parseInt£¨args£§0£§£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡applet¡£numObservers¡¡=¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡£¨args¡£length¡¡¡¶¡¡2¡¡£¿¡¡5¡¡£º¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Integer¡£parseInt£¨args£§1£§£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡Frame¡¡aFrame¡¡=¡¡new¡¡Frame£¨¡¨Sharing2¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡aFrame¡£addWindowListener£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡new¡¡WindowAdapter£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡public¡¡void¡¡windowClosing£¨WindowEvent¡¡e£©£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡System¡£exit£¨0£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡£ý£©£»¡¡¡¡

¡¡¡¡¡¡¡¡aFrame¡£add£¨applet£»¡¡BorderLayout¡£CENTER£©£»¡¡¡¡

¡¡¡¡¡¡¡¡aFrame¡£setSize£¨350£»¡¡applet¡£numCounters¡¡*100£©£»¡¡¡¡

¡¡¡¡¡¡¡¡applet¡£in¡¡it£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡applet¡£start£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡aFrame¡£setVisible£¨true£©£»¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡505¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡507¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡£ý¡¡¡¡

£ý¡¡///£º~¡¡¡¡

¡¡¡¡

ÎÒÃÇ×¢Òâµ½ÎÞÂÛrun£¨£©»¹ÊÇ¡¡synchTest£¨£©¶¼ÊÇ¡°Í¬²½µÄ¡±¡£Èç¹ûֻͬ²½ÆäÖеÄÒ»¸ö·½·¨£¬ÄÇôÁíÒ»¸ö¾Í¿ÉÒÔ×Ô¡¡

ÓɺöÊÓ¶ÔÏóµÄËø¶¨£¬²¢¿ÉÎÞ°­µØµ÷Óá£ËùÒÔ±ØÐë¼Çסһ¸öÖØÒªµÄ¹æÔò£º¶ÔÓÚ·ÃÎÊij¸ö¹Ø¼ü¹²Ïí×ÊÔ´µÄËùÓз½¡¡

·¨£¬¶¼±ØÐë°ÑËüÃÇÉèΪ¡¡synchronized£¬·ñÔò¾Í²»ÄÜÕý³£µØ¹¤×÷¡£¡¡¡¡

ÏÖÔÚÓÖÓöµ½ÁËÒ»¸öÐÂÎÊÌâ¡£Watcher2¡¡ÓÀÔ¶¶¼²»ÄÜ¿´µ½ÕýÔÚ½øÐеÄÊÂÇ飬ÒòΪÕû¸örun£¨£©·½·¨ÒÑÉèΪ¡°Í¬¡¡

²½¡±¡£¶øÇÒÓÉÓڿ϶¨ÒªÎªÃ¿¸ö¶ÔÏóÔËÐÐrun£¨£©£¬ËùÒÔËøÓÀÔ¶²»ÄÜ´ò¿ª£¬¶øsynchTest£¨£©ÓÀÔ¶²»»áµÃµ½µ÷Óá£Ö®¡¡

ËùÒÔÄÜ¿´µ½ÕâÒ»½á¹û£¬ÊÇÒòΪaccessCount¡¡¸ù±¾Ã»Óб仯¡£¡¡¡¡

Ϊ½â¾öÕâ¸öÎÊÌ⣬ÎÒÃÇÄܲÉÈ¡µÄÒ»¸ö°ì·¨ÊÇÖ»½«run£¨£©ÖеÄÒ»²¿·Ö´úÂë¸ôÀë³öÀ´¡£ÏëÓÃÕâ¸ö°ì·¨¸ôÀë³öÀ´µÄ¡¡

ÄDz¿·Ö´úÂë½Ð×÷¡°¹Ø¼üÇøÓò¡±£¬¶øÇÒÒªÓò»Í¬µÄ·½Ê½À´Ê¹Óá¡synchronized¹Ø¼ü×Ö£¬ÒÔÉèÖÃÒ»¸ö¹Ø¼üÇøÓò¡£¡¡

Java¡¡Í¨¹ý¡°Í¬²½¿é¡±Ìṩ¶Ô¹Ø¼üÇøÓòµÄÖ§³Ö£»ÕâÒ»´Î£¬ÎÒÃÇÓá¡synchronized¹Ø¼ü×ÖÖ¸³ö¶ÔÏóµÄËøÓÃÓÚ¶ÔÆä¡¡

Öзâ±ÕµÄ´úÂë½øÐÐͬ²½¡£ÈçÏÂËùʾ£º¡¡¡¡

synchronized£¨syncObject£©¡¡£û¡¡¡¡

¡¡¡¡//¡¡This¡¡code¡¡can¡¡be¡¡accessed¡¡by¡¡on¡¡ly¡¡¡¡

¡¡¡¡//¡¡one¡¡thread¡¡at¡¡a¡¡time£»¡¡assuming¡¡all¡¡¡¡

¡¡¡¡//¡¡threads¡¡respect¡¡syncObject's¡¡lock¡¡¡¡

£ý¡¡¡¡

¡¡¡¡

ÔÚÄܽøÈëͬ²½¿é֮ǰ£¬±ØÐëÔÚ¡¡synchObject¡¡ÉÏÈ¡µÃËø¡£Èç¹ûÒÑÓÐÆäËûÏß³ÌÈ¡µÃÁËÕâ°ÑËø£¬¿é±ã²»ÄܽøÈ룬±Ø¡¡

ÐëµÈºòÄÇ°ÑËø±»ÊÍ·Å¡£¡¡¡¡

¿É´ÓÕû¸örun£¨£©ÖÐɾ³ý¡¡synchronized¹Ø¼ü×Ö£¬»»³ÉÓÃÒ»¸öͬ²½¿é°üΧÁ½¸ö¹Ø¼üÐУ¬´Ó¶øÍê³É¶Ô¡¡Sharing2¡¡Àý¡¡

×ÓµÄÐ޸ġ£µ«Ê²Ã´¶ÔÏóÓ¦×÷ΪËøÀ´Ê¹ÓÃÄØ£¿ÄǸö¶ÔÏóÒÑÓÉ¡¡synchTest£¨£©±ê¼Ç³öÀ´ÁË¡ª¡ªÒ²¾ÍÊǵ±Ç°¶ÔÏó¡¡

¡¡£¨this£©£¡ËùÒÔÐ޸ĹýµÄrun£¨£©·½·¨ÏóÏÂÃæÕâ¸öÑù×Ó£º¡¡¡¡

¡¡¡¡

¡¡¡¡public¡¡void¡¡run£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡while¡¡£¨true£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡synchronized£¨this£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡t1¡£setText£¨Integer¡£toString£¨count1£«£«£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡t2¡£setText£¨Integer¡£toString£¨count2£«£«£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡try¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡sleep£¨500£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡catch¡¡£¨InterruptedException¡¡e£©£û£ý¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡

ÕâÊDZØÐë¶Ô¡¡Sharing2¡£java¡¡×÷³öµÄΨһÐ޸ģ¬ÎÒÃǻῴµ½¾¡¹ÜÁ½¸ö¼ÆÊýÆ÷ÓÀÔ¶²»»áÍÑÀëͬ²½£¨È¡¾öÓÚÔÊÐí¡¡

Watcher¡¡Ê²Ã´Ê±ºò¼ì²éËüÃÇ£©£¬µ«ÔÚrun£¨£©Ö´ÐÐÆڼ䣬ÈÔÈ»Ïò¡¡Watcher¡¡ÌṩÁË×ã¹»µÄ·ÃÎÊȨÏÞ¡£¡¡¡¡

µ±È»£¬ËùÓÐͬ²½¶¼È¡¾öÓÚ³ÌÐòÔ±ÊÇ·ñÇÚ·Ü£ºÒª·ÃÎʹ²Ïí×ÊÔ´µÄÿһ²¿·Ö´úÂ붼±ØÐë·â×°µ½Ò»¸öÊʵ±µÄͬ²½¿é¡¡

Àï¡£¡¡¡¡

¡¡¡¡

2¡£¡¡Í¬²½µÄЧÂÊ¡¡¡¡

ÓÉÓÚҪΪͬÑùµÄÊý¾Ý±àдÁ½¸ö·½·¨£¬ËùÒÔÎÞÂÛÈçºÎ¶¼²»»á¸øÈËÁôÏÂЧÂʺܸߵÄÓ¡Ï󡣿´À´Ëƺõ¸üºÃµÄÒ»ÖÖ×ö¡¡

·¨Êǽ«ËùÓз½·¨¶¼ÉèΪ×Ô¶¯Í¬²½£¬²¢ÍêÈ«Ïû³ý¡¡synchronized¹Ø¼ü×Ö£¨µ±È»£¬º¬ÓÐsynchronized¡¡run£¨£©µÄÀý¡¡

×ÓÏÔʾ³öÕâÑù×öÊǺܲ»Í¨µÄ£©¡£µ«ËüÒ²½Òʾ³ö»ñÈ¡Ò»°ÑËø²¢·ÇÒ»ÖÖ¡°Á®¼Û¡±·½°¸¡ª¡ªÎªÒ»´Î·½·¨µ÷Óø¶³öµÄ¡¡

´ú¼Û£¨½øÈëºÍÍ˳ö·½·¨£¬²»Ö´Ðз½·¨Ö÷Ì壩ÖÁÉÙÒªÀÛ¼Óµ½Ëı¶£¬¶øÇÒ¸ù¾ÝÎÒÃǵľßÌåÏÖ·½°¸£¬ÕâÒ»´ú¼Û»¹ÓС¡

¿ÉÄܱäµÃ¸ü¸ß¡£ËùÒÔ¼ÙÈçÒÑÖªÒ»¸ö·½·¨²»»áÔì³É³åÍ»£¬×îÃ÷ÖǵÄ×ö·¨±ãÊdz·ÏûÆäÖеġ¡synchronized¹Ø¼ü×Ö¡£¡¡¡¡



14¡£2¡£3¡¡¡¡»Ø¹Ë¡¡Java¡¡Beans¡¡¡¡¡¡



ÎÒÃÇÏÖÔÚÒÑÀí½âÁËͬ²½£¬½Ó×Å¿É»»´ÓÁíÒ»¸ö½Ç¶ÈÀ´¿¼²ìJava¡¡Beans¡£ÎÞÂÛʲôʱºò´´½¨ÁËÒ»¸öBean¡¡£¬¾Í±ØÐë¡¡

¼Ù¶¨ËüÒªÔÚÒ»¸ö¶àÏ̵߳Ļ·¾³ÖÐÔËÐС£ÕâÒâζ×Å£º¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡506¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡508¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

£¨1£©¡¡Ö»Òª¿ÉÐУ¬Bean¡¡µÄËùÓй«¹²·½·¨¶¼Ó¦Í¬²½¡£µ±È»£¬ÕâÒ²´øÀ´ÁË¡°Í¬²½¡±ÔÚÔËÐÐÆÚ¼äµÄ¿ªÏú¡£ÈôÌرðÔÚÒâ¡¡

Õâ¸öÎÊÌ⣬ÔڹؼüÇøÓòÖв»»áÔì³ÉÎÊÌâµÄ·½·¨¾Í¿É±£ÁôΪ¡°²»Í¬²½¡±£¬µ«×¢ÒâÕâͨ³£¶¼²»ÊÇÊ®·ÖÈÝÒ×Åжϡ£¡¡

ÓÐ×ʸñµÄ·½·¨ÇãÏòÓÚ¹æÄ£ºÜС£¨ÈçÏÂÀýµÄ¡¡getCircleSize£¨£©£©ÒÔ¼°£¯»òÕß¡°Î¢Ð¡¡±¡£Ò²¾ÍÊÇ˵£¬Õâ¸ö·½·¨µ÷¡¡

ÓÃÔÚÈç´ËÉٵĴúÂëƬÀïÖ´ÐУ¬ÒÔÖÁÓÚÔÚÖ´ÐÐÆÚ¼ä¶ÔÏó²»Äܸı䡣Èç¹û½«ÕâÖÖ·½·¨ÉèΪ¡°²»Í¬²½¡±£¬¿ÉÄܶԳ̡¡

ÐòµÄÖ´ÐÐËٶȲ»»áÓÐÃ÷ÏÔµÄÓ°Ïì¡£¿ÉÄÜÒ²½«Ò»¸öBean¡¡µÄËùÓÐpublic¡¡·½·¨¶¼ÉèΪ¡¡synchronized£¬²¢Ö»ÓÐÔÚ±£¡¡

Ö¤Ìرð±ØÒª¡¢¶øÇÒ»áÔì³ÉÒ»¸ö²îÒìµÄÇé¿öÏ£¬²Å½«¡¡synchronized¹Ø¼ü×Öɾȥ¡£¡¡¡¡

£¨2£©¡¡Èç¹û½«Ò»¸ö¶àÔìÐÍʼþË͸øһϵÁжÔÄǸöʼþ¸ÐÐËȤµÄ¡°ÌýÖÚ¡±£¬±ØÐë¼ÙÔÚÁбíÖÐÒƶ¯µÄʱºò¿ÉÒÔÌí¼Ó¡¡

»òÕßɾ³ý¡£¡¡¡¡

¡¡¡¡

µÚÒ»µãºÜÈÝÒ×´¦Àí£¬µ«µÚ¶þµãÐèÒª¿¼ÂǸü¶àµÄ¶«Î÷¡£ÈÃÎÒÃÇÒÔÇ°Ò»ÕÂÌṩµÄBangBean¡£java¡¡ÎªÀý¡£ÔÚÄǸöÀý¡¡

×ÓÖУ¬ÎÒÃǺöÂÔÁË¡¡synchronized¡¡¹Ø¼ü×Ö£¨ÄÇʱ»¹Ã»ÓÐÒýÈëÄØ£©£¬²¢½«ÔìÐÍÉèΪµ¥ÔìÐÍ£¬´Ó¶ø»Ø±ÜÁ˶àÏ̵߳ġ¡

ÎÊÌâ¡£ÔÚÏÂÃæÕâ¸öÐ޸ĹýµÄ°æ±¾ÖУ¬ÎÒÃÇʹÆäÄÜÔÚ¶àÏ̻߳·¾³Öй¤×÷£¬²¢ÎªÊ¼þ²ÉÓÃÁ˶àÔìÐͼ¼Êõ£º¡¡¡¡

¡¡¡¡

//£º¡¡BangBean2¡£java¡¡¡¡

//¡¡You¡¡should¡¡write¡¡your¡¡Beans¡¡this¡¡way¡¡so¡¡they¡¡¡¡¡¡

//¡¡can¡¡run¡¡in¡¡a¡¡multithreaded¡¡environment¡£¡¡¡¡

import¡¡java¡£awt¡£*£»¡¡¡¡

import¡¡java¡£awt¡£event¡£*£»¡¡¡¡

import¡¡java¡£util¡£*£»¡¡¡¡

import¡¡java¡£io¡£*£»¡¡¡¡

¡¡¡¡

public¡¡class¡¡BangBean2¡¡extends¡¡Canvas¡¡¡¡¡¡

¡¡¡¡¡¡¡¡implements¡¡Serializable¡¡£û¡¡¡¡

¡¡¡¡private¡¡int¡¡xm£»¡¡ym£»¡¡¡¡

¡¡¡¡private¡¡int¡¡cSize¡¡=¡¡20£»¡¡//¡¡Circle¡¡size¡¡¡¡

¡¡¡¡private¡¡String¡¡text¡¡=¡¡¡¨Bang£¡¡¨£»¡¡¡¡

¡¡¡¡private¡¡int¡¡fontSize¡¡=¡¡48£»¡¡¡¡

¡¡¡¡private¡¡Color¡¡tColor¡¡=¡¡Color¡£red£»¡¡¡¡

¡¡¡¡private¡¡Vector¡¡actionListeners¡¡=¡¡new¡¡Vector£¨£©£»¡¡¡¡

¡¡¡¡public¡¡BangBean2£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡addMouseListener£¨new¡¡ML£¨£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡addMouseMotionListener£¨new¡¡MM£¨£©£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡synchronized¡¡int¡¡getCircleSize£¨£©¡¡£û¡¡¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡cSize£»¡¡¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡synchronized¡¡void¡¡¡¡¡¡

¡¡¡¡setCircleSize£¨int¡¡newSize£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡cSize¡¡=¡¡newSize£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡synchronized¡¡String¡¡getBangText£¨£©¡¡£û¡¡¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡text£»¡¡¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡synchronized¡¡void¡¡¡¡¡¡

¡¡¡¡setBangText£¨String¡¡newText£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡text¡¡=¡¡newText£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡synchronized¡¡int¡¡getFontSize£¨£©¡¡£û¡¡¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡fontSize£»¡¡¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡synchronized¡¡void¡¡¡¡¡¡

¡¡¡¡setFontSize£¨int¡¡newSize£©¡¡£û¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡507¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡509¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡fontSize¡¡=¡¡newSize£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡synchronized¡¡Color¡¡getTextColor£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡return¡¡tColor£»¡¡¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡synchronized¡¡void¡¡¡¡¡¡

¡¡¡¡setTextColor£¨Color¡¡newColor£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡tColor¡¡=¡¡newColor£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡void¡¡paint£¨Graphics¡¡g£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡g¡£setColor£¨Color¡£black£©£»¡¡¡¡

¡¡¡¡¡¡¡¡g¡£drawOval£¨xm¡¡cSize/2£»¡¡ym¡¡cSize/2£»¡¡¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡cSize£»¡¡cSize£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡//¡¡This¡¡is¡¡a¡¡multicast¡¡listener£»¡¡which¡¡is¡¡¡¡

¡¡¡¡//¡¡more¡¡typically¡¡used¡¡than¡¡the¡¡unicast¡¡¡¡

¡¡¡¡//¡¡approach¡¡taken¡¡in¡¡BangBean¡£java£º¡¡¡¡

¡¡¡¡public¡¡synchronized¡¡void¡¡addActionListener¡¡£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡ActionListener¡¡l£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡actionListeners¡£addElement£¨l£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡public¡¡synchronized¡¡void¡¡removeActionListener£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡ActionListener¡¡l£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡actionListeners¡£removeElement£¨l£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡//¡¡Notice¡¡this¡¡isn't¡¡synchronized£º¡¡¡¡

¡¡¡¡public¡¡void¡¡notifyListeners£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡ActionEvent¡¡a¡¡=¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡new¡¡ActionEvent£¨BangBean2¡£this£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ActionEvent¡£ACTION_PERFORMED£»¡¡null£©£»¡¡¡¡

¡¡¡¡¡¡¡¡Vector¡¡lv¡¡=¡¡null£»¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡Make¡¡a¡¡copy¡¡of¡¡the¡¡vector¡¡in¡¡case¡¡someone¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡adds¡¡a¡¡listener¡¡while¡¡we're¡¡¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡calling¡¡listeners£º¡¡¡¡

¡¡¡¡¡¡¡¡synchronized£¨this£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡lv¡¡=¡¡£¨Vector£©actionListeners¡£clone£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡¡¡¡¡//¡¡Call¡¡all¡¡the¡¡listener¡¡methods£º¡¡¡¡

¡¡¡¡¡¡¡¡for£¨int¡¡i¡¡=¡¡0£»¡¡i¡¡¡¶¡¡lv¡£size£¨£©£»¡¡i£«£«£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡ActionListener¡¡al¡¡=¡¡¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨ActionListener£©lv¡£elementAt£¨i£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡al¡£actionPerformed£¨a£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡class¡¡ML¡¡extends¡¡MouseAdapter¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡public¡¡void¡¡mousePressed£¨MouseEvent¡¡e£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡Graphics¡¡g¡¡=¡¡getGraphics£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡g¡£setColor£¨tColor£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡g¡£setFont£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡new¡¡Font£¨¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨TimesRoman¡¨£»¡¡Font¡£BOLD£»¡¡fontSize£©£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡int¡¡width¡¡=¡¡¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡508¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡510¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡g¡£getFontMetrics£¨£©¡£stringWidth£¨text£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡g¡£drawString£¨text£»¡¡¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡£¨getSize£¨£©¡£width¡¡width£©¡¡/2£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡getSize£¨£©¡£height/2£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡g¡£dispose£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡notifyListeners£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡class¡¡MM¡¡extends¡¡MouseMotionAdapter¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡public¡¡void¡¡mouseMoved£¨MouseEvent¡¡e£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡xm¡¡=¡¡e¡£getX£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡ym¡¡=¡¡e¡£getY£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡repaint£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡£ý¡¡¡¡

¡¡¡¡//¡¡Testing¡¡the¡¡BangBean2£º¡¡¡¡

¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡BangBean2¡¡bb¡¡=¡¡new¡¡BangBean2£¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡bb¡£addActionListener£¨new¡¡ActionListener£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡public¡¡void¡¡actionPerformed£¨ActionEvent¡¡e£©£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨ActionEvent¡¨¡¡£«¡¡e£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡¡¡¡¡£ý£©£»¡¡¡¡

¡¡¡¡¡¡¡¡bb¡£addActionListener£¨new¡¡ActionListener£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡public¡¡void¡¡actionPerformed£¨ActionEvent¡¡e£©£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨BangBean2¡¡action¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡¡¡¡¡£ý£©£»¡¡¡¡

¡¡¡¡¡¡¡¡bb¡£addActionListener£¨new¡¡ActionListener£¨£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡public¡¡void¡¡actionPerformed£¨ActionEvent¡¡e£©£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨More¡¡action¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡¡¡¡¡£ý£©£»¡¡¡¡

¡¡¡¡¡¡¡¡Frame¡¡aFrame¡¡=¡¡new¡¡Frame£¨¡¨BangBean2¡¡Test¡¨£©£»¡¡¡¡

¡¡¡¡¡¡¡¡aFrame¡£addWindowListener£¨new¡¡WindowAdapter£¨£©£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡public¡¡void¡¡windowClosing£¨WindowEvent¡¡e£©¡¡£û¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡System¡£exit£¨0£©£»¡¡¡¡

¡¡¡¡¡¡¡¡¡¡¡¡£ý¡¡¡¡

¡¡¡¡¡¡¡¡£ý£©£»¡¡¡¡

¡¡¡¡¡¡¡¡aFrame¡£add£¨bb£»¡¡BorderLayout¡£CENTER£©£»¡¡¡¡

¡¡¡¡¡¡¡¡aFrame¡£setSize£¨300£»300£©£»¡¡¡¡

¡¡¡¡¡¡¡¡aFrame¡£setVisible£¨true£©£»¡¡¡¡

¡¡¡¡£ý¡¡¡¡

£ý¡¡///£º~¡¡¡¡

¡¡¡¡

ºÜÈÝÒ׾ͿÉÒÔΪ·½·¨Ìí¼Ósynchronized¡£µ«×¢ÒâÔÚaddActionListener£¨£©ºÍ¡¡removeActionListener£¨£©ÖУ¬ÏÖ¡¡

ÔÚÌí¼ÓÁËActionListener£¬²¢´ÓÒ»¸ö¡¡Vector¡¡ÖÐÒÆÈ¥£¬ËùÒÔÄܹ»¸ù¾Ý×Ô¼ºÔ¸ÍûʹÓÃÈÎÒâ¶à¸ö¡£¡¡¡¡

ÎÒÃÇ×¢Òâµ½£¬notifyListeners£¨£©·½·¨²¢Î´ÉèΪ¡°Í¬²½¡±¡£¿É´Ó¶à¸öÏß³ÌÖз¢³ö¶ÔÕâ¸ö·½·¨µÄµ÷Óá£ÁíÍ⣬ÔÚ¡¡

¶ÔnotifyListeners£¨£©µ÷ÓõÄÖÐ;£¬Ò²¿ÉÄÜ·¢³ö¶ÔaddActionListener£¨£©ºÍ¡¡removeActionListener£¨£©¡¡µÄµ÷¡¡

Óá£ÕâÏÔÈ»»áÔì³ÉÎÊÌ⣬ÒòΪËü·ñ¶¨ÁËVector¡¡actionListeners¡¡¡£Îª»º½âÕâ¸öÎÊÌ⣬ÎÒÃÇÔÚÒ»¸ö¡¡

synchronized´Ó¾äÖС°¿Ë¡¡±ÁË¡¡Vector£¬²¢¶Ô¿Ë¡½øÐÐÁË·ñ¶¨¡£ÕâÑù±ã¿ÉÔÚ²»Ó°ÏìnotifyListeners£¨£©µÄÇ°¡¡

ÌáÏ£¬¶ÔVector¡¡½øÐвÙ×Ý¡£¡¡¡¡



¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡509¡¡


¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­Page¡¡511¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­¡­

paint£¨£©·½·¨Ò²Ã»ÓÐÉèΪ¡°Í¬²½¡±¡£Óëµ¥´¿µØÌí¼Ó×Ô¼ºµÄ·½·¨Ïà±È£¬¾ö¶¨ÊÇ·ñ¶Ô¹ýÔصķ½·¨½øÐÐͬ²½ÒªÀ§Äѵá¡

¶à¡£ÔÚÕâ¸öÀý×ÓÖУ¬ÎÞÂÛpaint£¨£©ÊÇ·ñ¡°Í¬²½¡±£¬ËüËƺõ¶¼ÄÜÕý³£µØ¹¤×÷¡£µ«±ØÐ뿼ÂǵÄÎÊÌâ°üÀ¨£º¡¡¡¡

£¨1£©¡¡·½·¨»áÔÚ¶ÔÏóÄÚ²¿Ð޸ġ°¹Ø¼ü¡±±äÁ¿µÄ״̬Âð£¿ÎªÅжÏÒ»¸ö±äÁ¿ÊÇ·ñ¡°¹Ø¼ü¡±£¬±ØÐëÖªµÀËüÊÇ·ñ»á±»³Ì¡¡

ÐòÖеÄÆäËûÏ̶߳ÁÈ¡»òÉèÖ㨾ÍÄ¿Ç°µÄÇé¿ö¿´£¬¶ÁÈ¡»òÉèÖü¸ºõ¿Ï¶¨ÊÇͨ¹ý¡°Í¬²½¡±·½·¨½øÐеģ¬ËùÒÔ¿ÉÒÔ¡¡

Ö»¶ÔËüÃǽøÐмì²é£©¡£¶Ôpaint£¨£©µÄÇé¿öÀ´Ëµ£¬²»»á·¢ÉúÈκÎÐ޸ġ£¡¡¡¡

£¨2£©¡¡·½·¨ÒªÒÔÕâЩ¡°¹Ø¼ü¡±±äÁ¿µÄ״̬Ϊ»ù´¡Âð£¿Èç¹ûÒ»¸ö¡°Í¬²½¡±·½·¨ÐÞ¸ÄÁËÒ»¸ö±äÁ¿£¬¶øÎÒÃǵķ½·¨Òª¡¡

Óõ½Õâ¸ö±äÁ¿£¬ÄÇôһ°ã¶¼Ô¸Òâ°Ñ×Ô¼ºµÄ·½·¨Ò²ÉèΪ¡°Í¬²½¡±¡£»ùÓÚÕâһǰÌᣬ´ó¼Ò¿É¹Û²ìµ½cSize¡¡ÓÉ¡°Í¬¡¡

²½¡
·µ»ØĿ¼ ÉÏÒ»Ò³ ÏÂÒ»Ò³ »Øµ½¶¥²¿ ÔÞ£¨1£© ²È£¨1£©
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·­Ò³ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾­Ñé½±Àø£¬ÈÏÕæдԭ´´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾­Ñé½±ÀøŶ£¡