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

µ±Ç°Ò³Ãæ: ¿ª·¢×ÊÁÏÊ×Ò³ ¡ú Java רÌâ ¡ú Java Ïß³Ì/ÄÚ´æÄ£Ð͵ÄȱÏݺÍÔöÇ¿

Java Ïß³Ì/ÄÚ´æÄ£Ð͵ÄȱÏݺÍÔöÇ¿

ÕªÒª: JavaÌṩÁËThread/Runnable/ThreadGroupµÈһϵÁзâ×°µÄÀàºÍ½Ó¿Ú£¬ÈóÌÐòÔ±¿ÉÒÔ¸ßЧµÄ¿ª·¢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>

¡¡¡¡JavaÔÚÓïÑÔ²ã´ÎÉÏʵÏÖÁ˶ÔÏ̵߳ÄÖ§³Ö¡£ËüÌṩÁËThread/Runnable/ThreadGroupµÈһϵÁзâ×°µÄÀàºÍ½Ó¿Ú£¬ÈóÌÐòÔ±¿ÉÒÔ¸ßЧµÄ¿ª·¢Java¶àÏß³ÌÓ¦Óá£ÎªÁËʵÏÖͬ²½£¬JavaÌṩÁËsynchronize¹Ø¼ü×ÖÒÔ¼°objectµÄwait()/notify()»úÖÆ£¬¿ÉÊÇÔÚ¼òµ¥Ò×Óõı³ºó£¬Ó¦²ØןüΪ¸´ÔÓµÄÐþ»ú£¬ºÜ¶àÎÊÌâ¾ÍÊÇÓɴ˶øÆð¡£

<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ÄÚ´æÄ£ÐÍ

¡¡¡¡ÔÚÁ˽âJavaµÄͬ²½ÃØÃÜ֮ǰ£¬ÏÈÀ´¿´¿´JMM(Java Memory Model)¡£

¡¡¡¡Java±»Éè¼ÆΪ¿çƽ̨µÄÓïÑÔ£¬ÔÚÄÚ´æ¹ÜÀíÉÏ£¬ÏÔȻҲҪÓÐÒ»¸öͳһµÄÄ£ÐÍ¡£¶øÇÒJavaÓïÑÔ×î´óµÄÌصã¾ÍÊǷϳýÁËÖ¸Õ룬°Ñ³ÌÐòÔ±´ÓÍ´¿àÖнâÍѳöÀ´£¬²»ÓÃÔÙ¿¼ÂÇÄÚ´æʹÓú͹ÜÀí·½ÃæµÄÎÊÌâ¡£
¿ÉϧÊÀÊÂ×ܲ»¾¡ÈçÈËÒ⣬ËäÈ»JMMÉè¼ÆÉÏ·½±ãÁ˳ÌÐòÔ±£¬µ«ÊÇËüÔö¼ÓÁËÐéÄâ»úµÄ¸´Ôӳ̶ȣ¬¶øÇÒ»¹µ¼ÖÂijЩ±à³Ì¼¼ÇÉÔÚJavaÓïÑÔÖÐʧЧ¡£

¡¡¡¡JMMÖ÷ÒªÊÇΪÁ˹涨ÁËÏ̺߳ÍÄÚ´æÖ®¼äµÄһЩ¹Øϵ¡£¶ÔJava³ÌÐòÔ±À´ËµÖ»Ð踺ÔðÓÃsynchronizedͬ²½¹Ø¼ü×Ö£¬ÆäËüÖîÈçÓëÏß³Ì/ÄÚ´æÖ®¼ä½øÐÐÊý¾Ý½»»»/ͬ²½µÈ·±Ëö¹¤×÷¾ùÓÉÐéÄâ»ú¸ºÔðÍê³É¡£Èçͼ1Ëùʾ£º¸ù¾ÝJMMµÄÉè¼Æ£¬ÏµÍ³´æÔÚÒ»¸öÖ÷ÄÚ´æ(Main Memory)£¬JavaÖÐËùÓбäÁ¿¶¼´¢´æÔÚÖ÷´æÖУ¬¶ÔÓÚËùÓÐÏ̶߳¼Êǹ²ÏíµÄ¡£Ã¿ÌõÏ̶߳¼ÓÐ×Ô¼ºµÄ¹¤×÷ÄÚ´æ(Working Memory)£¬¹¤×÷ÄÚ´æÖб£´æµÄÊÇÖ÷´æÖÐijЩ±äÁ¿µÄ¿½±´£¬Ï̶߳ÔËùÓбäÁ¿µÄ²Ù×÷¶¼ÊÇÔÚ¹¤×÷ÄÚ´æÖнøÐУ¬Ïß³ÌÖ®¼äÎÞ·¨Ï໥ֱ½Ó·ÃÎÊ£¬±äÁ¿´«µÝ¾ùÐèҪͨ¹ýÖ÷´æÍê³É¡£


ͼ1 JavaÄÚ´æÄ£ÐÍʾÀýͼ

¡¡¡¡Ïß³ÌÈôÒª¶Ôij±äÁ¿½øÐвÙ×÷£¬±ØÐë¾­¹ýһϵÁв½Ö裺Ê×ÏÈ´ÓÖ÷´æ¸´ÖÆ/Ë¢ÐÂÊý¾Ýµ½¹¤×÷Äڴ棬ȻºóÖ´ÐдúÂ룬½øÐÐÒýÓÃ/¸³Öµ²Ù×÷£¬×îºó°Ñ±äÁ¿ÄÚÈÝд»ØMain Memory¡£JavaÓïÑԹ淶(JLS)ÖжÔÏ̺߳ÍÖ÷´æ»¥²Ù×÷¶¨ÒåÁË6¸öÐÐΪ£¬·Ö±ðΪload£¬save£¬read£¬write£¬assignºÍuse£¬ÕâЩ²Ù×÷ÐÐΪ¾ßÓÐÔ­×ÓÐÔ£¬ÇÒÏ໥ÒÀÀµ£¬ÓÐÃ÷È·µÄµ÷ÓÃÏȺó˳Ðò¡£¾ßÌåµÄÃèÊöÇë²Î¼ûJLSµÚ17Õ¡£

¡¡¡¡ÎÒÃÇÔÚÇ°ÃæµÄÕ½ڽéÉÜÁËsynchronizedµÄ×÷Óã¬ÏÖÔÚ£¬´ÓJMMµÄ½Ç¶ÈÀ´ÖØÐÂÉóÊÓsynchronized¹Ø¼ü×Ö¡£

¡¡¡¡¼ÙÉèijÌõÏß³ ÌÖ´ÐÐÒ»¸ösynchronized´úÂë¶Î£¬Æä¼ä¶Ôij±äÁ¿½øÐвÙ×÷£¬JVM»áÒÀ´ÎÖ´ÐÐÈç϶¯×÷£º

¡¡¡¡(1) »ñȡͬ²½¶ÔÏómonitor (lock)

¡¡¡¡(2) ´ÓÖ÷´æ¸´ÖƱäÁ¿µ½µ±Ç°¹¤×÷ÄÚ´æ (read and load)

¡¡¡¡(3) Ö´ÐдúÂ룬¸Ä±ä¹²Ïí±äÁ¿Öµ (use and assign)

¡¡¡¡(4) Óù¤×÷ÄÚ´æÊý¾ÝË¢ÐÂÖ÷´æÏà¹ØÄÚÈÝ (store and write)

¡¡¡¡(5) ÊÍ·Åͬ²½¶ÔÏóËø (unlock)

¡¡¡¡¿É¼û£¬synchronizedµÄÁíÍâÒ»¸ö×÷ÓÃÊDZ£Ö¤Ö÷´æÄÚÈݺÍÏ̵߳Ť×÷ÄÚ´æÖеÄÊý¾ÝµÄÒ»ÖÂÐÔ¡£Èç¹ûûÓÐʹÓÃsynchronized¹Ø¼ü×Ö£¬JVM²»±£Ö¤µÚ2²½ºÍµÚ4²½»áÑϸñ°´ÕÕÉÏÊö´ÎÐòÁ¢¼´Ö´ÐС£ÒòΪ¸ù¾ÝJLSÖеĹ涨£¬Ï̵߳Ť×÷ÄÚ´æºÍÖ÷´æÖ®¼äµÄÊý¾Ý½»»»ÊÇËÉñîºÏµÄ£¬Ê²Ã´Ê±ºòÐèҪˢй¤×÷ÄÚ´æ»òÕ߸üÐÂÖ÷ÄÚ´æÄÚÈÝ£¬¿ÉÒÔÓɾßÌåµÄÐéÄâ»úʵÏÖ×ÔÐоö¶¨¡£Èç¹û¶à¸öÏß³ÌͬʱִÐÐÒ»¶Îδ¾­synchronized±£»¤µÄ´úÂë¶Î£¬ºÜÓпÉÄÜijÌõÏß³ÌÒѾ­¸Ä¶¯Á˱äÁ¿µÄÖµ£¬µ«ÊÇÆäËûÏß³ÌÈ´ÎÞ·¨¿´µ½Õâ¸ö¸Ä¶¯£¬ÒÀÈ»ÔھɵıäÁ¿ÖµÉϽøÐÐÔËË㣬×îÖÕµ¼Ö²»¿ÉÔ¤ÁϵÄÔËËã½á¹û¡£




¡ü·µ»ØĿ¼
ǰһƪ: Struts¹ú¼Ê»¯±à³ÌÇáËÉʵÏÖ
ºóһƪ: J2EE´´½¨¶àýÌå¹ÜÀíÈí¼þ½â¾ö·½°¸