Javaͬ²½»úÖÆÊÕ¼¯×ܽá synchronized
ËäÈ»ºÜÉÙÓõ½Í¬²½£¬³öÓÚ¸öÈËÐËȤ×ÔѧÁËһϡ£ÏÖ¶ÔJAVAÖеÄͬ²½ÊÕ¼¯Ñ§Ï°µÄ¶«Î÷×ܽáһϣ¬ÈÃ×Ô¼º¼¼ÊõµÄÌõÀí»¯£¬Äܹ»³ÁµíÏÂÀ´¡£
ͬ²½¾ÍÊÇ´®ÐÐʹÓÃһЩ×ÊÔ´.
JAVAÖÐsynchronized¹Ø¼ü×ÖÄܹ»×÷Ϊº¯ÊýµÄÐÞÊηû£¬Ò²¿É×÷Ϊº¯ÊýÄÚµÄÓï¾ä£¬Ò²¾ÍÊÇÆ½Ê±ËµµÄͬ²½·½·¨ºÍͬ²½Óï¾ä¿é¡£¼ÙÈçÔÙϸµÄ·ÖÀ࣬synchronized¿É×÷ÓÃÓÚinstance±äÁ¿¡¢object reference£¨¶ÔÏóÒýÓã©¡¢staticº¯ÊýºÍclass literals(ÀàÃû³Æ×ÖÃæ³£Á¿)ÉíÉÏ¡£
ÔÚ½øÒ»²½²ûÊö֮ǰ£¬ÎÒÃÇÐèÒªÃ÷È·¼¸µã£º
A£®ÎÞÂÛsynchronized¹Ø¼ü×Ö¼ÓÔÚ·½·¨ÉÏ»¹ÊǶÔÏóÉÏ£¬ËûÈ¡µÃµÄËø¶¼ÊǶÔÏ󣬶ø²»ÊǰÑÒ»¶Î´úÂë»òº¯Êýµ±×÷Ëø¨D¨D¶øÇÒͬ²½·½·¨ºÜ¿ÉÄÜ»¹»á±»ÆäËûÏ̵߳ĶÔÏó·ÃÎÊ¡£
B£®Ã¿¸ö¶ÔÏóÖ»ÓÐÒ»¸öËø£¨lock£©ºÍÖ®Ïà¹ØÁª¡£
C£®ÊµÏÖͬ²½ÊÇÒªºÜ´óµÄϵͳ¿ªÏú×÷Ϊ´ú¼ÛµÄ£¬ÉõÖÁ¿ÉÄÜÔì³ÉËÀËø£¬ËùÒÔ¾¡Á¿±ÜÃâÎÞνµÄͬ²½¿ØÖÆ¡£
D. ¶àÏß³ÌÖжԹ²Ïí¡¢¿É±äµÄÊý¾Ý½øÐÐͬ²½.
¶ÔÓÚº¯ÊýÖеľֲ¿±äÁ¿Ã»±ØÒª½øÐÐͬ²½.
¶ÔÓÚ²»¿É±äÊý¾Ý,Ҳû±ØÒª½øÐÐͬ²½.
¶àÏß³ÌÖзÃÎʹ²Ïí¿É±äÊý¾Ý²ÅÓбØÒª.
½Ó×ÅÀ´ÌÖÂÛsynchronizedÓõ½²»Í¬µØ·½¶Ô´úÂë²úÉúµÄÓ°Ï죺
¼ÙÉèP1¡¢P2ÊÇͬһ¸öÀàµÄ²»Í¬¶ÔÏó£¬Õâ¸öÀàÖж¨ÒåÁËÒÔϼ¸ÖÖÇé¿öµÄͬ²½¿é»òͬ²½·½·¨£¬P1¡¢P2¾Í¶¼Äܹ»µ÷ÓÃËûÃÇ¡£
1£® °Ñsynchronizedµ±×÷º¯ÊýÐÞÊηûʱ£¬Ê¾Àý´úÂëÈçÏ£º
Public synchronized void method(){
//….
}
ÕâÒ²¾ÍÊÇͬ²½·½·¨£¬ÄÇÕâʱsynchronizedËø¶¨µÄÊÇÄĸö¶ÔÏóÄØ£¿ËûËø¶¨µÄÊǵ÷ÓÃÕâ¸öͬ²½·½·¨¶ÔÏó¡£Ò²¾ÍÊÇ˵£¬µ±Ò»¸ö¶ÔÏóP1ÔÚ²»Í¬µÄÏß³ÌÖÐÖ´ÐÐÕâ¸öͬ²½·½·¨Ê±£¬ËûÃÇÖ®¼ä»áÐγɻ¥³â£¬´ïµ½Í¬²½µÄЧ¹û¡£µ«ÊÇÕâ¸ö¶ÔÏóËùÊôµÄClassËù²úÉúµÄÁíÒ»¶ÔÏóP2È´Äܹ»ÈÎÒâµ÷ÓÃÕâ¸ö±»¼ÓÁËsynchronized¹Ø¼ü×ֵķ½·¨¡£
ÉϱߵÄʾÀý´úÂëµÈͬÓÚÈçÏ´úÂ룺
public void method()
{
synchronized (this) // (1)
{
//…..
}
}
(1)´¦µÄthisÖ¸µÄÊÇÊ²Ã´ÄØ£¿ËûÖ¸µÄ¾ÍÊǵ÷ÓÃÕâ¸ö·½·¨µÄ¶ÔÏó£¬ÈçP1¡£¿É¼ûͬ²½·½·¨ÊµÖÊÊǽ«synchronized×÷ÓÃÓÚobject reference¡£¨D¨DÄǸöÄõ½ÁËP1¶ÔÏóËøµÄỊ̈߳¬²ÅÄܹ»µ÷ÓÃP1µÄͬ²½·½·¨£¬¶ø¶ÔP2¶øÑÔ£¬P1Õâ¸öËøºÍËûºÁ²»Ïà¸É£¬³ÌʽҲ¿ÉÄÜÔÚÕâÖÖÇéÐÎϰÚÍÑͬ²½»úÖÆµÄ¿ØÖÆ£¬Ôì³ÉÊý¾Ý»ìÂÒ£º£¨
2£®Í¬²½¿é£¬Ê¾Àý´úÂëÈçÏ£º
public void method(SomeObject so) {
synchronized(so)
Ïà¹ØÎĵµ£º
¡¡¡¡¸ù¾ÝÔ¼¶¨£¬ÔÚʹÓÃjava±à³ÌµÄʱºòÓ¦¾¡¿ÉÄܵÄʹÓÃÏÖÓеÄÀà¿â£¬µ±È»ÄãÒ²¿ÉÒÔ×Ô¼º±àдһ¸öÅÅÐòµÄ·½·¨£¬»òÕß¿ò¼Ü£¬µ«ÊÇÓм¸¸öÈËÄÜдµÃ±ÈJDKÀïµÄ»¹ÒªºÃ ÄØ£¿Ê¹ÓÃÏÖÓеÄÀàµÄÁíÒ»¸öºÃ´¦ÊÇ´úÂëÒ×ÓÚÔĶÁºÍά»¤£¬ÕâÆªÎÄÕÂÖ÷Òª½²µÄÊÇÈçºÎʹÓÃÏÖÓеÄÀà¿â¶ÔÊý×éºÍ¸÷ÖÖCollectionÈÝÆ÷½øÐÐÅÅÐò£¬(ÎÄÕÂÖеÄÒ» ²¿·ÖÀý×ÓÀ´×Ô¡¶Java Devel ......
ʹÓÃÒ»ÖÖ³ÌÐòÉè¼ÆÓïÑÔ£¬¾ÍÓ¦¸ÃרҵµØÊ¹ÓÃËü¡£±¾ÎÄÊÇIBM developerWorksÖеÄһƪÎÄÕ£¬ËüÃèÊöµÄ¶¼ÊÇJava±à³ÌÖеÄϸ½ÚÎÊÌ⣬¾¡¹ÜÈç´Ë£¬»¹ÊÇÖµµÃ´ó¼ÒÍæÎ¶Ò»·¬£¬ÖÁÉÙÎÒ×÷ΪһÃûÀÏÄñ»¹ÊÇ´ÓÖÐÊÜÒæÁË¡£(2010.02.09×îºó¸üÐÂ)
ѧϰһÖÖеijÌÐòÉè¼ÆÓïÑÔ±ÈѧϰһÖÖеĿÚÍ·ÓïÑÔÒªÈÝÒס£µ«ÊÇ£¬ÔÚÕâÁ½ÖÖŬÁ¦ÖУ¬¶¼Ð ......
È«ÆÁ¶Àռģʽ
¾³£Ê¹ÓÃDirectX APIµÄ³ÌÐòÔ±¿ÉÄܶÔÈ«ÆÁ¶ÀռģʽÒѾºÜÊìϤÁË ¡£ËüÔÊÐí³ÌÐòԱͨ¹ýÐü¹Ò²Ù×÷ϵͳÀ´Ö±½ÓÔÚÆÁÄ»ÉϽøÐлæÖÆ¡£ÔÚ´«Í³µÄJava GUI ³ÌÐòÖУ¬ AWT ͨ¹ýʼþ·ÖÅÉÏ̺߳ÍÔÚÊʵ±µÄʱºòµ÷ÓÃ×é¼þµÄpaint()·½·¨À´´«ËÍÀ´×Ô²Ù×÷ϵͳµÄpaintʼþ¡£ÔÚÈ«ÆÁ¶ÀռģʽӦÓÃÖÐÄã¿ÉÒÔͨ¹ý³ÌÐò½øÐлæÖÆ¡£ ÁíÍâ ......
< type="text/javascript"> ÖÚËùÖÜÖª£¬ÔÚ³ÌÐò¿ª·¢ÖУ¬ÄÑÃâ»áÓöµ½ÐèҪƥÅä¡¢²éÕÒ¡¢Ìæ»»¡¢ÅжÏ×Ö·û´®µÄÇé¿ö·¢Éú£¬¶øÕâЩÇé¿öÓÐʱÓֱȽϸ´ÔÓ£¬Èç¹ûÓô¿±àÂ뷽ʽ½â¾ö£¬ÍùÍù»áÀ˷ѳÌÐòÔ±µÄʱ¼ä¼°¾«Á¦¡£Òò´Ë£¬Ñ§Ï°¼°Ê¹ÓÃÕýÔò±í´ïʽ£¬±ã³ÉÁ˽â¾öÕâһì¶ÜµÄÖ÷ÒªÊֶΡ£
´ó ¼Ò¶¼ÖªµÀ£¬ÕýÔò±í´ïʽÊÇÒ»ÖÖ¿ÉÒÔÓÃÓÚÄ£Ê ......