Javaͬ²½»úÖÆ£ºsychronized¶Ô´úÂëÓ°Ïì
ת £ºhttp://kuru.javaeye.com/blog/288467
Java¶Ô¶àÏ̵߳ÄÖ§³ÖÓëͬ²½»úÖÆÉîÊÜ´ó¼ÒµÄϲ°®£¬Ëƺõ¿´ÆðÀ´Ê¹ÓÃÁËsynchronized¹Ø¼ü×־ͿÉÒÔÇáËɵؽâ¾ö¶àÏ̹߳²ÏíÊý¾Ýͬ²½ÎÊÌâ¡£µ½µ×ÈçºÎ£¿¨D¨D»¹µÃ¶Ôsynchronized¹Ø¼ü×ÖµÄ×÷ÓýøÐÐÉîÈëÁ˽â²Å¿É¶¨ÂÛ¡£ ×ܵÄ˵À´£¬synchronized¹Ø¼ü×Ö¿ÉÒÔ×÷Ϊº¯ÊýµÄÐÞÊηû£¬Ò²¿É×÷Ϊº¯ÊýÄÚµÄÓï¾ä£¬Ò²¾ÍÊÇƽʱ˵µÄͬ²½·½·¨ºÍͬ²½Óï¾ä¿é¡£Èç¹ûÔÙϸµÄ·ÖÀ࣬synchronized¿É×÷ÓÃÓÚinstance±äÁ¿¡¢object reference£¨¶ÔÏóÒýÓã©¡¢staticº¯ÊýºÍclass literals(ÀàÃû³Æ×ÖÃæ³£Á¿)ÉíÉÏ¡£ ÔÚ½øÒ»²½²ûÊö֮ǰ£¬ÎÒÃÇÐèÒªÃ÷È·¼¸µã£º A£®ÎÞÂÛsynchronized¹Ø¼ü×Ö¼ÓÔÚ·½·¨ÉÏ»¹ÊǶÔÏóÉÏ£¬ËüÈ¡µÃµÄËø¶¼ÊǶÔÏ󣬶ø²»ÊÇ°ÑÒ»¶Î´úÂë»òº¯Êýµ±×÷Ëø¨D¨D¶øÇÒͬ²½·½·¨ºÜ¿ÉÄÜ»¹»á±»ÆäËûÏ̵߳ĶÔÏó·ÃÎÊ¡£ B£®Ã¿¸ö¶ÔÏóÖ»ÓÐÒ»¸öËø£¨lock£©ÓëÖ®Ïà¹ØÁª¡£ C£®ÊµÏÖͬ²½ÊÇÒªºÜ´óµÄϵͳ¿ªÏú×÷Ϊ´ú¼ÛµÄ£¬ÉõÖÁ¿ÉÄÜÔì³ÉËÀËø£¬ËùÒÔ¾¡Á¿±ÜÃâÎÞνµÄͬ²½¿ØÖÆ¡£ ½Ó×ÅÀ´ÌÖÂÛsynchronizedÓõ½²»Í¬µØ·½¶Ô´úÂë²úÉúµÄÓ°Ï죺 ¼ÙÉèP1¡¢P2ÊÇͬһ¸öÀàµÄ²»Í¬¶ÔÏó£¬Õâ¸öÀàÖж¨ÒåÁËÒÔϼ¸ÖÖÇé¿öµÄͬ²½¿é»òͬ²½·½·¨£¬P1¡¢P2¾Í¶¼¿ÉÒÔµ÷ÓÃËüÃÇ¡£ 1£®°Ñsynchronizedµ±×÷º¯ÊýÐÞÊηûʱ£¬Ê¾Àý´úÂëÈçÏ£º Public synchronized void methodAAA() { //…. } ÕâÒ²¾ÍÊÇͬ²½·½·¨£¬ÄÇÕâʱsynchronizedËø¶¨µÄÊÇÄĸö¶ÔÏóÄØ£¿ËüËø¶¨µÄÊǵ÷ÓÃÕâ¸öͬ²½·½·¨¶ÔÏó¡£Ò²¾ÍÊÇ˵£¬µ±Ò»¸ö¶ÔÏóP1ÔÚ²»Í¬µÄÏß³ÌÖÐÖ´ÐÐÕâ¸öͬ²½·½·¨Ê±£¬ËüÃÇÖ®¼ä»áÐγɻ¥³â£¬´ïµ½Í¬²½µÄЧ¹û¡£µ«ÊÇÕâ¸ö¶ÔÏóËùÊôµÄClassËù²úÉúµÄÁíÒ»¶ÔÏóP2È´¿ÉÒÔÈÎÒâµ÷ÓÃÕâ¸ö±»¼ÓÁËsynchronized¹Ø¼ü×ֵķ½·¨¡£ ÉϱߵÄʾÀý´úÂëµÈͬÓÚÈçÏ´úÂ룺 public void methodAAA() { synchronized (this) // (1) { //….. } } (1)´¦µÄthisÖ¸µÄÊÇʲôÄØ£¿ËüÖ¸µÄ¾ÍÊǵ÷ÓÃÕâ¸ö·½·¨µÄ¶ÔÏó£¬ÈçP1¡£¿É¼ûͬ²½·½·¨ÊµÖÊÊǽ«synchronized×÷ÓÃÓÚobject reference¡£¨D¨DÄǸöÄõ½ÁËP1¶ÔÏóËøµÄỊ̈߳¬²Å¿ÉÒÔµ÷ÓÃP1µÄͬ²½·½·¨£¬¶ø¶ÔP2¶øÑÔ£¬P1Õâ¸öËøÓëËüºÁ²»Ïà¸É£¬³ÌÐòÒ²¿ÉÄÜÔÚÕâÖÖÇéÐÎÏ°ÚÍÑͬ²½»úÖƵĿØÖÆ£¬Ôì³ÉÊý¾Ý»ìÂÒ 2£®Í¬²½¿é£¬Ê¾Àý´úÂëÈçÏ£º public void method3(SomeObject so) { synchronized(so) { //….. } } Õâʱ£¬Ëø¾ÍÊÇsoÕâ¸ö¶ÔÏó£¬ËÄõ½Õâ¸öËø˾ͿÉÒÔÔËÐÐËüËù¿ØÖƵÄÄǶδúÂë¡£µ±ÓÐÒ»¸öÃ÷È·µÄ¶ÔÏó×÷ΪËøʱ£¬¾Í¿ÉÒÔÕâÑùд³ÌÐò£¬µ«µ±Ã»ÓÐÃ÷È·µÄ¶ÔÏó×÷ΪËø£¬Ö»ÊÇÏëÈÃÒ»¶Î´úÂëͬ²½Ê±£¬¿ÉÒÔ´´½¨Ò»¸öÌØÊâµÄinstance±äÁ¿£¨ËüµÃÊÇÒ»¸ö¶ÔÏó£©À´³äµ±Ëø£º class Foo
Ïà¹ØÎĵµ£º
<%
response.setContentType("application/vnd.ms-excel;charset=utf-8");
String reportname = (String)request.getAttribute("reportname");
String reportFileName=java.net.URLEncoder.encode(reportname, "UTF-8");
String filenamedispla ......
´ó¼ÒºÃ£¬ÕâÀïÓÐIBMµÄÈý¸ö³¤ÆÚÐèÇ󣺾ùÊÇÐèÒª2ÄêÒÔÉÏÏà¹Ø¹¤×÷¾Ñ飬ÆäÖÐJavaÒÔ¼°TestingÐèÒªÓ¢Óï¿ÉÒÔ½»Á÷£¬C/Unix²»ÐèÒªÓïÑÔ¡£
Java ´óÁ¬
ÃèÊö£ºJava programming, knowledge in J2SE, SWT/JFace, XML. Eclipse programming, knowledge in eclipse architecture. Clear understanding of plugin development. Hands-on exp ......
2006ÄêÎÒÔø¾Ð´¹ýһƪÌÖÂÛJavaδÀ´µÄÎÄÕ£¬ÔÚÄÇƪÎÄÕÂÖÐÎÒÌÖÂÛÁË¿ªÔ´¡¢JavaÔÚÏû·Ñµç×ÓÉ豸ÖеÄʹÓã¬ÏÖÔÚÔÚËùÓÐÀàÐ͵ÄÒƶ¯É豸ÉÏJavaµÄÓ¦ÓÃÕýÔÚÖð²½ÉÏÉý¡£¶ÔSun±»ÊÕ¹ºÒ»Ê£¬ÒÔ¼°JavaÓëOracle²úÆ·¼¯³ÉÎÒûʲôºÃÔ¤²âµÄ£¬Ò²Ã»Ê²Ã´ºÃµÄ½¨Ò飬ÎÒÖ»µ£ÐÄJavaµÄδÀ´»á×ßÏòºÎ·½?ÔÚÕâƪÎÄÕÂÖÐÎÒÖØÐÂÉóÊÓÁËOracleÊÕ¹ºSunºóJavaµÄδÀ´Ö ......
ÎļþÃû£ºSjis.java
class Sj
{
public static void main(String[] args)
{
}
}
-------------------------------------
Ö´ÐУº
javac Sjis.java
Java Sj
¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢¡¢
ÎļþÃû£ºSjis.java
public class Sjis.java
{
public static ......