Õ¾ÄÚËÑË÷: ÇëÊäÈëËÑË÷¹Ø¼ü´Ê

µ±Ç°Ò³Ãæ: ¿ª·¢×ÊÁÏÊ×Ò³ ¡ú Java רÌâ ¡ú ÔÚJavaÖÐÈçºÎʵÏÖ³¤Ê±¼äÈÎÎñ

ÔÚJavaÖÐÈçºÎʵÏÖ³¤Ê±¼äÈÎÎñ

ÕªÒª: ÔÚÈí¼þ¿ª·¢ÖУ¬ÎÒÃǾ­³£ÃæÁÙ×Å´¦Àí³¤Ê±¼äÈÎÎñµÄ¶àÏ̱߳à³ÌÎÊÌâ
<table cellSpacing=0 cellPadding=5 width=570 bgColor=#fbe392 border=0> <tr> <td> <table cellSpacing=0 cellPadding=5 width=570 border=0> <tr> <td align=middle width=200 bgColor=#e1b004>Ì켫IT×ÊѶ¶ÌÐÅ·þÎñ µçÄÔС¼¼ÇÉ
<table cellSpacing=0 cellPadding=3 width="100%" bgColor=#fffcc0 border=0> function check4() { if (dn.mobile.value.length!=11) { alert("ÊÖ»úºÅÂë²»ÕýÈ·!"); dn.mobile.focus(); return false; } return true; } <form name=dn onsubmit="return check4()" action=http://www.my5757.com/tj/join.jsp target=_blank> <tr vAlign=center> <td>×Ê·Ñ£º°üÔÂ5Ôª
ÊÖ»ú£º <input style="BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-BOTTOM: #000000 1px solid; HEIGHT: 16px" size=11 name=mobile> <input type=image height=18 width=45 src="http://www.my5757.com/yesky/images/d34.gif" align=middle border=0 name=image2> </td></tr><input type=hidden value=yjq name=stype> </form></table></td> <td width=370 bgColor=#fbc403>½éÉÜ£ºÏ¸´¦×ÅÊÖ£¬ÇÉ´¦Óù¦¡£¸ßÊֺͲËÄñÖ®¼äµÄ²î±ð¾ÍÊÇ£º¸ßÊÖʲô¶¼ÖªµÀ£¬²ËÄñÖªµÀһЩ¡£µçÄÔС¼¼ÇÉÊÕ¼¯×îÐÂÆæÕиßÕУ¬ÈÃÄãÇáËÉ̤ÉϸßÊÖ֮·¡£ </td></tr></table></td></tr></table>
¡¡¡¡ÕªÒª£º ÔÚÈí¼þ¿ª·¢ÖУ¬ÎÒÃǾ­³£ÃæÁÙ×Å´¦Àí³¤Ê±¼äÈÎÎñµÄ¶àÏ̱߳à³ÌÎÊÌâ¡£ÔÚÎÒÃǵÄezOneƽ̨µÄ¿ª·¢ÖоͶദÉæ¼°µ½£¬ÈçJPCÊý¾Ý·þÎñJPCÊý¾Ý´¦Àí·þÎñ ±¨¾¯Áª¶¯ ÃŽûϵͳµÈ¡£±¾ÈËÔÚ±àдDEMO³ÌÐòµÄ¹ý³ÌÖм¸Ò×Æä¸å£¬É··ÑÐÄ»ú£¬µ«ÒÀÈ»¸Ð¾õÓÐÐí¶àµØ·½ÐèÒª¸Ä½ø£¬ÎªÁ˼õÉÙ¶àÏ̱߳à³Ì´øÀ´µÄ·çÏÕ£¬ÎÒ·­ÒëÕûÀíÁËÒ»¸öÀàËÆÎÊÌâµÄ½â¾ö·½°¸¿ò¼ÜÒÔ´ïµ½Ò»ÀÍÓÀÒÝ¡£ ΪÁ˱ãÓÚÔĶÁ£¬±£ÁôÔ­ÎÄ¡£ÒýÓÃÇë±£Áô×÷ÕߺÍÎÄÕÂÀ´Ô´¡£

¡¡¡¡¹Ø¼ü´Ê£º Thread¡¢ Lock ¡¢ Notification¡¢³¤Ê±¼äÈÎÎñ¡£

<iframe align=right marginWidth=0 marginHeight=0 src="http://images.chinabyte.com/adjs/iframe-pip/y-software-pip.html" frameBorder=0 width=360 scrolling=no height=300></iframe>¡¡¡¡ÔÚÓ¦ÓóÌÐòÖÐÎÒÃǾ­³£ÐèÒªÒ»¸öÀàÈ¥Íê³ÉÏñÊý¾Ý´¦Àí¡¢¼àÌýʼþ»ò¼ì²éÁíÒ»¸öÀàµÄ»î¶¯µÈÈÎÎñ¡£ÎªÁË´ïµ½Õâ¸öÄ¿±ê£¬ÎÒÃÇ¿ÉÄÜʹÓôøÓÐÒ»Ì×ËøºÍÏûϢ֪ͨµÄÏ̡߳£JAVA Ïß³ÌAPIÒѾ­ºÜºÃµÄÎĵµ»¯£¬µ«ÎªÁËʹÏß³ÌÄܹ»ÕýÈ·¶ø¸ßЧµØÔËÐУ¬³ÌÐòÔ±ÈÔÈ»ÐèÒª·á¸»µÄ±à³Ì¾­Ñé²¢±àд´óÁ¿µÄ´úÂ롣ͨ¹ýÓ¦Óñ¾ÆªÎÄÕÂÖÐÌÖÂ۵Ŀò¼Ü£¬³ÌÐòÔ±Äܹ»±ÜÃâÈÌÊܼ尾д´óÁ¿µÄ´úÂ룬¿ìËÙ´´½¨½¡×³µÄÓ¦ÓóÌÐò¡£ ¶þ¡¢³¤Ê±¼äÔËÐÐÈÎÎñµÄ³ÌÐò¿ò¼Ü¡£

¡¡¡¡¹ØÓÚ³¤Ê±¼äÔËÐеÄÈÎÎñµÄÖ÷ÒªÊÂÇéÊÇÈçºÎÔÚÓ¦ÓóÌÐòµÄÉúÃüÆÚʹËüÒ»Ö±±£³ÖÔËÐС£ÊµÏÖµÄÇ¡µ±·½·¨ÊÇÌṩһ¸öÏß³ÌÀ´Ö´ÐÐÕâ¸öÌض¨µÄÈÎÎñ¡£ÎÒÃÇ¿ÉÒÔͨ¹ý¼Ì³ÐThreadÀà»òʵÏÖjava.lang.Runnable½Ó¿ÚÀ´´ïµ½¸ÃÄ¿±ê¡£Èç¹û²ÉÓÃʵÏÖRunnable½Ó¿ÚµÄ·½Ê½£¬¾Í¿ÉÒÔÄܹ»»ñµÃ¸üºÃµÄÃæÏò¶ÔÏóµÄÉè¼Æ£¬Í¬Ê±¿ÉÒÔ±ÜÃâJAVAÖеĵ¥¼Ì³ÐÎÊÌâ¡£ÁíÍ⣬ÎÒÃÇÒ²ÄܸüÓÐЧµÄ´¦ÀíRunnableʵÀý£¨ÀýÈçʹÓÃÏ̳߳Øͨ³£ÐèÒªÒ»¸öRunnableʵÀý¶ø²»ÊÇÏß³ÌÀ´ÔËÐУ©¡£

¡¡¡¡¿ò¼ÜµÄ»ù´¡ÊÇÒ»¸ö½ÐWorkerµÄ³éÏóÀ࣬ËüʵÏÖÁËRunnable½Ó¿Ú£¬²¢ÌṩÁËÓÐЧ´¦ÀíÈÎÎñµÄºÃ·½·¨¡£ÕâЩ·½·¨ÓÐЩÒѾ­±»ÊµÏÖ£¬Èçrun()·½·¨£¬µ«ÓÐЩÊdzéÏó·½·¨£¬¿ª·¢ÈËÔ±±ØÐë×Ô¼ºÀ´ÊµÏÖ¡£Èç¹ûÒª´´½¨Ò»¸ö³¤Ê±¼äÔËÐеÄÀ࣬ÄãÖ»ÐèÒª¼Ì³ÐWorkerÀಢʵÏÖ¼¸¸ö³éÏó·½·¨¡£ÈÃÎÒÃÇ¿´¿´ÕâЩ·½·¨µÄϸ½Ú¡£

¡¡¡¡Worker ÀàµÄrun()·½·¨±»Éè¼Æ³ÉÖ»Òª²»Í£Ö¹ÔËÐоͳÖÐøµÄÖ´ÐÐwork()·½·¨¡£work()·½·¨¿ÉÒÔ¸ºÔðÊý¾Ý´¦Àí¡¢Ê¼þÏìÓ¦¡¢Îļþ¶Áд¡¢£¬Ö´ÐÐSQLÃüÁîµÈ²Ù×÷¡£ÕâÑùwork()·½ ·¨Äܹ»Å׳öÒì³££¬²¢½«Òì³£´«¸ørun()£¬È»ºóÓÉrun()·½·¨À´´¦ÀíÕâЩÒì³£¡£

¡¡¡¡run()·½·¨ÓÐÄÚÍâÁ½²ãtry-catchÓï¾ä£ºÒ»²ã´¦ÓÚwhile-loopÑ­»·Í⣬һ²ãÔÚwhile-loopÑ­»·ÄÚ¡£Ç°Ò»¸ötry-catchÓÃÓÚ²¶»ñ·Ç±à³ÌÒì³£ÒÔÈ·±£run()·½·¨²»Í˳ö¡£ºóÒ»¸ötry-catchÓï¾ä²¶»ñ¹ØÓÚÒµÎñÂß¼­ºÍÏàÓ¦ÐÐΪµÄ¸÷ÖÖÒì³£¡£Èç¹ûÔÚwork()·½·¨Öз¢ÉúÁËһЩµÈ´ý²Ù×÷£¨ÀýÈçµÈ´ýÒ»¸öÊäÈëÁ÷»òÒ»¸öSocket£©£¬Å׳öÒ»¸öInterruptedExceptionµÄ·½·¨ÊÇ¿ÉÈ¡µÄ¡£Òª¼ÇסµÄÊÇÖ»ÒªÓ¦ÓóÌÐòÔÚÔËÐУ¬work()·½·¨²»ÐèÒªÈκÎwhile-loopÑ­»·È¥Î¬³ÖËüÔËÐУ¬ÕâÒ»ÇÐÓÉWorker´ú°ìÁË¡£

¡¡¡¡run()¿ªÊ¼Ê±£¬µ÷ÓÃprepareWorker()·½·¨À´×¼±¸³¤Ê±¼äÔËÐÐÈÎÎñÐèÒªµÄËùÓÐ×ÊÔ´£¨²Î¿¼³ÌÐòÇåµ¥A£©¡£ÀýÈç £¬ÔÚÕâ¸ö·½·¨ÖпÉÒÔ´ò¿ªÒ»¸ö½«ÒªÓõ½µÄÊý¾Ý¿âÁ¬½Ó»òÎļþ¡£ÓÈÆä¶ÔÓÚÄÇЩÏñ½¨Á¢Ò»¸ösocketÕâÑùµÄ×èÈû²Ù×÷·ÅÔÚÕâ¶ùÊǺܺõġ£ÒòΪÈôÈÃËüÃÇÔÚÒ»¸ö¶ÀÁ¢µÄÏß³ÌÖÐÔËÐУ¬Ôò²»»á×èÈûÖ÷Ï̵߳ÄÖ´ÐС£

¡¡¡¡ÓëÇ°Ãæ·½·¨Ïà·´µÄÊÇreleaseWorker()£¬ËüÔÚrun()·½·¨×¼±¸Í˳öʱ±»µ÷Ó㨲ο¼³ÌÐòÇåµ¥A£©¡£Ôڸ÷½·¨ÖÐÄã¿ÉÒÔ±àдÄÇЩÊÍ·Åϵͳ×ÊÔ´»òÖ´ÐÐÆäËüÇå³ý¶¯×÷µÄ´úÂë¡£¸Ã·½·¨ÀàËÆÓÚjava.lang.Object.finalize()£¬µ«ËüÔÚÏß³ÌÖÐֹʱ±»ÏÔʽµÄµ÷Óá£

¡¡¡¡Èý¡¢¿ò¼ÜÖеĴíÎó´¦Àí»úÖÆ

¡¡¡¡ÁíÒ»¸öÖØÒªµÄ·½·¨ÊÇhandleError()£¬Ëü´øÓÐÒ»¸öjava.lang.ThrowableµÄÊäÈë²ÎÊý¡£ÔÚrun()·½·¨Ã¿´Î·¢Éú´íÎóʱµ÷ÓÃÕâ¸ö·½·¨¡£ÕâÒÀÀµÓÚÄãÔõôʵÏÖ´íÎó´¦Àí¡£·½·¨Ö®Ò»ÊÇд´íÎóÈÕÖ¾²¢Í¨¹ýµ÷ÓÃhalt()·½·¨ÖÐÖ¹ÈÎÎñ£¨²Î¿¼³ÌÐòÇåµ¥A£©¡£

¡¡¡¡isCondition()·½·¨ÓÃÓÚÅжÏwork()·½·¨ÊÇ·ñÄܹ»±»Ö´ÐС£Òò´ËÔÊÐíϸÁ£¶ÈµØ¿ØÖÆÈÎÎñ¡£ÕâÔÚʼþ´¥·¢µÄ¿ò¼ÜÖзdz£ÓÐÓᣵ±work()·½·¨µÄÖ´ÐÐÌõ¼þδÂú×ãʱ£¬work·½·¨½«±»¹ÒÆð£¬Ö±µ½Ìõ¼þÍêÈ«Âú×㣨ÀýÈ磬»º´æÇø·Ç¿Õ£©¡£ÔÚWorkerµÄʵÏÖÖÐÕâ¸öÌõ¼þ½«°´ÔÚ·½·¨setTimeout()ÖÐÖ¸¶¨µÄʱ¼äÖÜÆڵؼì²éÒ»¸öËø֪ͨ¡£Èç¹ûÔÚÈÎÎñÖв»ÐèÒªÈκεȴý×èÈû£¬½ö½öֻҪʹisCondition()·½·¨×ÜÊÇ·µ»ØÕæÖµ¡£

¡¡¡¡ËÄ¡¢ÈÎÎñÖÕֹʱ»ú

¡¡¡¡Ä㻹ÐèÒªisRunning(), broadcast(), halt()·½·¨¡£Í¨¹ý·ÃÎÊisRunning()·½·¨£¬Ä㽫Äܼì²éij¸öÈÎÎñÊÇ·ñÕýÔÚÔËÐУ¬²¢¾ö¶¨ÊÇ·ñÖÐÖ¹Ëü¡£broadcast()·½·¨ÕýÈ·µØ֪ͨËø¶ÔÏ󣬲¢ÇÒÈç¹ûÕâ¸ö¶ÔÏóÒ»Ö±µÈ´ýÕâ¸öËø£¬ÄÇô¾Í¼¤»îÕâ¸öÈÎÎñ¡£halt()·½·¨ÖÐÖ¹Ò»¸öÈÎÎñ£¬Òò´ËÏÂÒ»isRunning()״̬һµ©±»µ÷Óã¬run()·½·¨¾ÍÍ˳ö£¬ÒòΪÕâ¸ö·½·¨Ö»Í¨ÖªÄǸö¿ÉÄÜ×èÈûÕâ¸öÈÎÎñÏ̵߳ÄËø¡£µ±ÔÚwork()·½·¨ÖÐÖ´ÐÐ×èÈû×÷ҵʱÓÃÏàͬµÄËøÊÇÃ÷Öǵġ£Èç¹ûÄã² »ÄÜÓÃÏàͬµÄËø¶ÔÏóʱ£¬ÀýÈçÔÚÖ´ÐÐjava.io.InputStream.read()·½·¨Óöµ½×èÈûʱ£¬Äã¾ÍÓ¦¸ÃÌí¼ÓËùÓпÉÄÜËøµÄÏÔʽ֪ͨ»òÕßÔö¼Ójava.lang.Thread.interrupt()µ½halt()ÖС£Èç¹ûÒ»¸öÄã×èÈûµÄ¶ÔÏó±»ÕýÈ·´¦Àí£¬java.lang.Thread.interrupt()½«»áÆð×÷Óá£ÀýÈ磬ËüÔÚInputStream.read()Ö´ÐÐʱÓÐ×÷Ó㬵«ÔÚÖ´ÐÐjava.sql.PreparedStatement.execute()²»Æð×÷Óã¬Òò´ËÔÚÿ¸öÌØÊâµÄÌõ¼þÏÂÄã±ØÐë²âÊÔhalt()·½·¨¡£

¡¡¡¡Ò»µ©ÄãÊìϤWorkerÀ࣬Äã¾ÍºÜÈÝÒ×´´½¨Äã×Ô¼ºµÄʵÏÖ£¨²Î¿¼³ÌÐòÇåµ¥B£©£¬ÎªÁË°ÑÕâÀ൱×÷Ò»¸öÏß³ÌÔËÐУ¬½ö½öÖ»Ðè¼òµ¥µØʹÓà new Thread(new WaitedWorker()).start¡£Ó¦ÓÃThread.interrupt()»òWorker.halt()»òËüÃǵÄ×éºÏ£¬Äã¾Í¿ÉÒÔ׼ȷµÄ¿ØÖÆÈÎÎñµÄÖ´ÐС£ÀýÈçµ±JVMͨ¹ýÔÚjava.lang.Runtime.addShutdownHook()·½·¨ÖзÅÏàÓ¦µÄ´úÂëֹͣʱ£¬Äã¾ÍÄÜÍ£Ö¹ËùÓеÄÈÎÎñ¡£

¡¡¡¡Îå¡¢½áÂÛ

¡¡¡¡ÎÒÃÇÒѾ­¼ì²éÁ˳¤Ê±¼äÔËÐÐÈÎÎñ¿ò¼Ü£¬²¢ÇÒ¿´µ½ÔõÑùͨ¹ý´Ó´´½¨Ò»¸ö»ùÓÚËüµÄ³éÏóÀàµÄÈÎÎñ¡£ËüµÄ¹¹¼ÜÊÇÇåÎúºÍÁé»îµÄ£¬²¢ÇÒ±»Éè¼Æ³É¿ÉÀ©Õ¹µÄ¡£ÓÃÕâ¸ö¿ò¼ÜÄãÄܱÜÃâΪ´´×÷Àà¶ø½Ê¾¡ÄÔÖ­£¬²¢ÇÒ°ïÖúÄãÄܹ»¿ª·¢³ö¸ßЧ¡¢¿É¿¿µÄÓ¦ÓóÌÐò¡£ zmbbs=1;



¡ü·µ»ØĿ¼
ǰһƪ: J2EE Web·þÎñ¿Í»§¶ËÖÊÁ¿±¨¸æ(¶þ)
ºóһƪ: J2EE Web·þÎñ¿Í»§¶ËÖÊÁ¿±¨¸æ(Ò»)