¾ÙÀý£ºÄк¢ºÍÅ®º¢Àý×Ó£¬Ã¿¸öÅ®º¢ÊÇÒ»¸ö¶ÔÏó£¬Ã¿¸öÄк¢ÊǸöÏ̡߳£Ã¿¸öÅ®º¢¶¼ÓÐ×Ô¼ºµÄËø³Ø¡£Ã¿¸öÄк¢¿ÉÄÜÔÚËø³ØÀïµÈ´ý¡£
Class Girl{
Public void hand(){
}
Public syncronized void kiss(){
}
}
Class Boy extends Thread{
Public void run(){
}
}
Ëø±ê¼ÇÈç¹û¹ý¶à£¬¾Í»á³öÏÖÏ̵߳ȴýÆäËûÏß³ÌÊÍ·ÅËø±ê¼Ç£¬¶øÓÖ¶¼²»ÊÍ·Å×Ô¼ºµÄËø±ê¼Ç¹©ÆäËûÏß³ÌÔËÐеÄ×´¿ö¡£¾ÍÊÇËÀËø¡£
ËÀËøµÄÁ½ÖÖ´¦Àí·½·¨
ͳһÅÅÁÐËøË³Ðò(½â¾ö²»Í¬·½·¨ÖжԶà¸ö¹²Ïí×ÊÔ´µÄ·ÃÎÊ)
¶ÔÏó1µÄ·½·¨
synchronized(a)
synchronized(b)
¶ÔÏó2µÄ·½·¨
synchronized(a)
synchronized(b)
2£®Ï̼߳äͨÐÅ(Ò²¾ÍÊÇÏ̼߳äµÄÏ໥е÷)
Ï̼߳äͨÐÅʹÓÃµÄ¿Õ¼ä³ÆÖ®Îª¶ÔÏóµÄµÈ´ý³Ø£¨wait pool£©£¬¸Ã¶ÓÁÐÒ²ÊÇÊôÓÚ¶ÔÏóµÄ¿Õ¼äµÄ¡£
½øÈëµÈ´ý³Ø
ʹÓÃObjectÀàÖÐwait()µÄ·½·¨£¬ÔÚÔËÐÐ״̬ÖУ¬Ï̵߳÷ÓÃwait()£¬´Ëʱ±íʾÏ߳̽«ÊÍ·Å×Ô¼ºËùÓеÄËø±ê¼ÇºÍCPUµÄÕ¼Óã¬Í¬Ê±½øÈëÕâ¸ö¶ÔÏóµÄµÈ´ý³Ø¡£µÈ´ý³ØµÄ״̬ҲÊÇ×èÈû״̬£¬Ö»²»¹ýÏß³ÌÊÍ·Å×Ô¼ºµÄËø±ê¼Ç¡£
Í˳öµÈ´ý³Ø½øÈëËø³Ø
notify()£º½«´Ó¶ÔÏóµÄµÈ´ý³ØÖÐÒÆ×ßÒ»¸öÈÎÒâµÄỊ̈߳¬²¢·Åµ½Ëø³ØÖУ¬ÄÇÀïµÄ¶ÔÏóÒ»Ö±Ôڵȴý£¬Ö±µ½¿ÉÒÔ»ñµÃ¶ÔÏóµÄËø±ê¼Ç¡£
notifyAll(): ½«´ÓµÈ´ý³ØÖÐÒÆ×ßËùÓеȴýÄǸö¶ÔÏóµÄÏ̲߳¢·Åµ½Ëø³ØÖУ¬Ö»ÓÐËø³ØÖеÄÏß³ÌÄÜ»ñÈ¡¶ÔÏóµÄËø±ê¼Ç£¬Ëø±ê¼ÇÔÊÐíÏ̴߳ÓÉÏ´ÎÒòµ÷ÓÃwait()¶øÖжϵĵط½¿ªÊ¼¼ÌÐøÔËÐÐ
×¢Ò⣺ֻÄܶԼÓËøµÄ×ÊÔ´½øÐÐwait()ºÍnotify()¡£
1) wait()£º½»³öËøºÍCPUµÄÕ¼ÓÃ;
2) notify()£º½«´Ó¶ÔÏóµÄµÈ´ý³ØÖÐÒÆ×ßÒ»¸öÈÎÒâµÄỊ̈߳¬²¢·Åµ½Ëø³ØÖУ¬ÄÇÀïµÄ¶ÔÏóÒ»Ö±Ôڵȴý£¬Ö±µ½¿ÉÒÔ»ñµÃ¶ÔÏóµÄËø±ê¼Ç¡£
3) notifyAll(): ½«´ÓµÈ´ý³ØÖÐÒÆ×ßËùÓеȴýÄǸö¶ÔÏóµÄÏ̲߳¢·Åµ½Ëø³ØÖУ¬Ö»ÓÐËø³ØÖеÄÏß³ÌÄÜ»ñÈ¡¶ÔÏóµÄËø±ê¼Ç£¬Ëø±ê¼ÇÔÊÐíÏ̴߳ÓÉÏ´ÎÒòµ÷ÓÃwait()¶øÖжϵĵط½¿ªÊ¼¼ÌÐøÔËÐÐ
×¢£ºÔÚjava.io°üÖÐVector ºÍ HashTable Ö®ËùÒÔÊÇḬ̈߳²È«µÄ£¬ÊÇÒòΪÿ¸ö·½·¨¶¼ÓÐsynchronizedÐÞÊΡ£Static ·½·¨¿ÉÒÔ¼Ó synchronized , ËøµÄÊÇÀà¶ÔÏó¡£
µ«ÊÇVector ÊÇ jdk 1.0 µÄ ArrayList ÊÇ jdk1.2 ËùÒÔʵ¼ÊÓ¦Óû¹ÊÇʹÓÃArrayList
Àý×Ó£º
Éú²úÕߺÍÏû·ÑÕß
Ò»¸ö¹ñ̨һ¶¨ÊýÁ¿µÄ²úÆ·,¹ñ̨Âúʱ²»ÄÜÉú²ú£¬¿Õʱ²»Äܹ»Âò¡£