ºìÁªLinuxÃÅ»§
Linux°ïÖú

Java¶àÏ̳߳ÌÐòÉè¼ÆÈëÃÅ

·¢²¼Ê±¼ä:2006-05-03 19:25:27À´Ô´:ºìÁª×÷Õß:ÌìɽÀÏͯ
ÔÚJavaÓïÑÔ²úÉúÇ°£¬´«Í³µÄ³ÌÐòÉè¼ÆÓïÑԵijÌÐòͬһʱ¿ÌÖ»Äܵ¥ÈÎÎñ²Ù×÷£¬Ð§Âʷdz£µÍ£¬ÀýÈç³ÌÐòÍùÍùÔÚ½ÓÊÕÊý¾ÝÊäÈëʱ·¢Éú×èÈû£¬Ö»Óеȵ½³ÌÐò»ñµÃÊý¾Ýºó²ÅÄܼÌÐøÔËÐС£Ëæ×ÅInternetµÄѸÃÍ·¢Õ¹£¬ÕâÖÖ×´¿öÔ½À´Ô½²»ÄÜÈÃÈËÃÇÈÌÊÜ£ºÈç¹ûÍøÂç½ÓÊÕÊý¾Ý×èÈû£¬ºǫ́³ÌÐò¾Í´¦Óڵȴý״̬¶ø²»¼ÌÐøÈκβÙ×÷£¬¶øÕâÖÖ×èÈûÊǾ­³£»áÅöµ½µÄ£¬´ËʱCPU×ÊÔ´±»°×°×µÄÏÐÖÃÆðÀ´¡£Èç¹ûÔÚºǫ́³ÌÐòÖÐÄܹ»Í¬Ê±´¦Àí¶à¸öÈÎÎñ£¬¸Ã¶àºÃ°¡£¡Ó¦Internet¼¼Êõ¶øÉúµÄJavaÓïÑÔ½â¾öÁËÕâ¸öÎÊÌ⣬¶àÏ̳߳ÌÐòÊÇJavaÓïÑÔµÄÒ»¸öºÜÖØÒªµÄÌص㡣ÔÚÒ»¸öJava³ÌÐòÖУ¬ÎÒÃÇ¿ÉÒÔͬʱ²¢ÐÐÔËÐжà¸öÏà¶Ô¶ÀÁ¢µÄỊ̈߳¬ÀýÈ磬ÎÒÃÇÈç¹û´´½¨Ò»¸öÏß³ÌÀ´½øÐÐÊý¾ÝÊäÈëÊä³ö£¬¶ø´´½¨ÁíÒ»¸öÏß³ÌÔÚºǫ́½øÐÐÆäËüµÄÊý¾Ý´¦Àí£¬Èç¹ûÊäÈëÊä³öÏß³ÌÔÚ½ÓÊÕÊý¾Ýʱ×èÈû£¬¶ø´¦ÀíÊý¾ÝµÄÏß³ÌÈÔÈ»ÔÚÔËÐС£¶àÏ̳߳ÌÐòÉè¼Æ´ó´óÌá¸ßÁ˳ÌÐòÖ´ÐÐЧÂʺʹ¦ÀíÄÜÁ¦¡£


¡¡¡¡Ï̵߳Ĵ´½¨


¡¡¡¡ÎÒÃÇÖªµÀJavaÊÇÃæÏò¶ÔÏóµÄ³ÌÐòÓïÑÔ£¬ÓÃJava½øÐгÌÐòÉè¼Æ¾ÍÊÇÉè¼ÆºÍʹÓÃÀ࣬JavaΪÎÒÃÇÌṩÁËÏß³ÌÀàThreadÀ´´´½¨Ị̈߳¬´´½¨Ïß³ÌÓë´´½¨ÆÕͨµÄÀàµÄ¶ÔÏóµÄ²Ù×÷ÊÇÒ»ÑùµÄ£¬¶øÏ߳̾ÍÊÇThreadÀà»òÆä×ÓÀàµÄʵÀý¶ÔÏó¡£ÏÂÃæÊÇÒ»¸ö´´½¨Æô¶¯Ò»¸öÏ̵߳ÄÓï¾ä£º


¡¡¡¡Thread thread1=new Thread(); file://ÉùÃ÷Ò»¸ö¶ÔÏóʵÀý£¬¼´´´½¨Ò»¸öỊ̈߳»


¡¡¡¡Thread1.run(); file://ÓÃThreadÀàÖеÄrun()·½·¨Æô¶¯Ị̈߳»


¡¡¡¡´ÓÕâ¸öÀý×Ó£¬ÎÒÃÇ¿ÉÒÔͨ¹ýThread()¹¹Ôì·½·¨´´½¨Ò»¸öỊ̈߳¬²¢Æô¶¯¸ÃÏ̡߳£ÊÂʵÉÏ£¬Æô¶¯Ị̈߳¬Ò²¾ÍÊÇÆô¶¯Ï̵߳Ärun()·½·¨£¬¶ø ThreadÀàÖеÄrun()·½·¨Ã»ÓÐÈκβÙ×÷Óï¾ä£¬ËùÒÔÕâ¸öÏß³ÌûÓÐÈκβÙ×÷¡£ÒªÊ¹Ïß³ÌʵÏÖÔ¤¶¨¹¦ÄÜ£¬±ØÐ붨Òå×Ô¼ºµÄrun()·½·¨¡£JavaÖÐͨ³£ÓÐÁ½ÖÖ·½Ê½¶¨Òårun()·½·¨£º


¡¡¡¡Í¨¹ý¶¨ÒåÒ»¸öThreadÀàµÄ×ÓÀ࣬ÔÚ¸Ã×ÓÀàÖÐÖØдrun()·½·¨¡£Thread×ÓÀàµÄʵÀý¶ÔÏó¾ÍÊÇÒ»¸öỊ̈߳¬ÏÔÈ»£¬¸ÃÏß³ÌÓÐÎÒÃÇ×Ô¼ºÉè¼ÆµÄÏß³ÌÌårun()·½·¨£¬Æô¶¯Ï߳̾ÍÆô¶¯ÁË×ÓÀàÖÐÖØдµÄrun()·½·¨¡£


¡¡¡¡Í¨¹ýRunnable½Ó¿Ú£¬ÔڸýӿÚÖж¨Òårun()·½·¨µÄ½Ó¿Ú¡£Ëùν½Ó¿Ú¸úÀà·Ç³£ÀàËÆ£¬Ö÷ÒªÓÃÀ´ÊµÏÖÌØÊ⹦ÄÜ£¬È縴ÔÓ¹ØϵµÄ¶àÖؼ̳й¦ÄÜ¡£ÔÚ´Ë£¬ÎÒÃǶ¨ÒåÒ»¸öʵÏÖRunnable() ½Ó¿ÚµÄÀ࣬ÔÚ¸ÃÀàÖж¨Òå×Ô¼ºµÄrun()·½·¨£¬È»ºóÒÔ¸ÃÀàµÄʵÀý¶ÔÏóΪ²ÎÊýµ÷ÓÃThreadÀàµÄ¹¹Ôì·½·¨À´´´½¨Ò»¸öÏ̡߳£


¡¡¡¡Ï̱߳»Êµ¼Ê´´½¨ºó´¦ÓÚ´ýÃü״̬£¬¼¤»î£¨Æô¶¯£©Ï߳̾ÍÊÇÆô¶¯Ï̵߳Ärun()·½·¨£¬ÕâÊÇͨ¹ýµ÷ÓÃÏ̵߳Ästart()·½·¨À´ÊµÏֵġ£


¡¡¡¡ÏÂÃæÒ»¸öÀý×Óʵ¼ùÁËÈçºÎͨ¹ýÉÏÊöÁ½ÖÖ·½·¨´´½¨Ï̲߳¢Æô¶¯ËüÃÇ£º


¡¡¡¡// ͨ¹ýThreadÀàµÄ×ÓÀà´´½¨µÄỊ̈߳»


¡¡¡¡¡¡class thread1 extends Thread


¡¡¡¡¡¡¡¡{ file://×Ô¶¨ÒåÏ̵߳Ärun()·½·¨£»


¡¡¡¡¡¡¡¡¡¡public void run()


¡¡¡¡¡¡¡¡¡¡¡¡{


¡¡¡¡¡¡¡¡¡¡¡¡¡¡System.out.println("Thread1 is running¡­");


¡¡¡¡¡¡¡¡¡¡¡¡}


¡¡¡¡¡¡¡¡¡¡}


¡¡¡¡¡¡file://ͨ¹ýRunnable½Ó¿Ú´´½¨µÄÁíÍâÒ»¸öỊ̈߳»


¡¡¡¡class thread2 implements Runnable


¡¡¡¡¡¡{ file://×Ô¶¨ÒåÏ̵߳Ärun()·½·¨£»


¡¡¡¡¡¡¡¡public void run()


¡¡¡¡¡¡¡¡{


¡¡¡¡¡¡¡¡¡¡System.out.println("Thread2 is running¡­");


¡¡¡¡¡¡¡¡}


¡¡¡¡¡¡}


¡¡¡¡¡¡file://³ÌÐòµÄÖ÷Àà´


¡¡¡¡¡¡class Multi_Thread file://ÉùÃ÷Ö÷Àࣻ


¡¡¡¡¡¡¡¡{


¡¡¡¡¡¡¡¡¡¡plubic static void mail(String args[]) file://ÉùÃ÷Ö÷·½·¨£»


¡¡¡¡¡¡¡¡¡¡¡¡{


¡¡¡¡¡¡¡¡¡¡¡¡¡¡thread1 threadone=new thread1(); file://ÓÃThreadÀàµÄ×ÓÀà´´½¨Ị̈߳»


¡¡¡¡¡¡¡¡¡¡¡¡¡¡Thread threadtwo=new Thread(new thread2()); file://ÓÃRunnable½Ó¿ÚÀàµÄ¶ÔÏó´´½¨Ị̈߳»


¡¡¡¡¡¡¡¡¡¡¡¡¡¡threadone.start(); threadtwo.start(); file://strat()·½·¨Æô¶¯Ị̈߳»


¡¡¡¡¡¡¡¡¡¡¡¡}


¡¡¡¡¡¡¡¡¡¡}


¡¡¡¡ÔËÐиóÌÐò¾Í¿ÉÒÔ¿´³ö£¬Ïß³ÌthreadoneºÍthreadtwo½»ÌæÕ¼ÓÃCPU£¬´¦ÓÚ²¢ÐÐÔËÐÐ״̬¡£¿ÉÒÔ¿´³ö£¬Æô¶¯Ï̵߳Ärun()·½·¨ÊÇͨ¹ýµ÷ÓÃÏ̵߳Ästart()·½·¨À´ÊµÏÖµÄ(¼ûÉÏÀýÖÐÖ÷Àà)£¬µ÷ÓÃstart()·½·¨Æô¶¯Ï̵߳Ärun()·½·¨²»Í¬ÓÚÒ»°ãµÄµ÷Ó÷½·¨£¬µ÷ÓÃÒ»°ã·½·¨Ê±£¬±ØÐëµÈµ½Ò»°ã·½·¨Ö´ÐÐÍê±Ï²ÅÄܹ»·µ»Østart()·½·¨£¬¶øÆô¶¯Ï̵߳Ärun()·½·¨ºó£¬start()¸æËßϵͳ¸ÃÏß³Ì×¼±¸¾ÍÐ÷¿ÉÒÔÆô¶¯run()·½·¨ºó£¬¾Í·µ»Østart()·½·¨Ö´Ðе÷ÓÃstart()·½·¨Óï¾äÏÂÃæµÄÓï¾ä£¬Õâʱrun()·½·¨¿ÉÄÜ»¹ÔÚÔËÐУ¬ÕâÑù£¬Ï̵߳ÄÆô¶¯ºÍÔËÐв¢ÐнøÐУ¬ÊµÏÖÁ˶àÈÎÎñ²Ù×÷¡£


¡¡¡¡Ï̵߳ÄÓÅÏȼ¶


¡¡¡¡¶ÔÓÚ¶àÏ̳߳ÌÐò£¬Ã¿¸öÏ̵߳ÄÖØÒª³Ì¶ÈÊDz»¾¡Ïàͬ£¬Èç¶à¸öÏß³ÌÔڵȴý»ñµÃCPUʱ¼äʱ£¬ÍùÍùÎÒÃÇÐèÒªÓÅÏȼ¶¸ßµÄÏß³ÌÓÅÏÈÇÀÕ¼µ½CPUʱ¼äµÃÒÔÖ´ÐУ»ÓÖÈç¶à¸öÏ߳̽»ÌæÖ´ÐÐʱ£¬ÓÅÏȼ¶¾ö¶¨Á˼¶±ð¸ßµÄÏ̵߳õ½CPUµÄ´ÎÊý¶àһЩÇÒʱ¼ä¶à³¤Ò»Ð©£»ÕâÑù£¬¸ßÓÅÏȼ¶µÄÏ̴߳¦ÀíµÄÈÎÎñЧÂʾ͸ßһЩ¡£


¡¡¡¡JavaÖÐÏ̵߳ÄÓÅÏȼ¶´ÓµÍµ½¸ßÒÔÕûÊý1~10±íʾ£¬¹²·ÖΪ10¼¶£¬ÉèÖÃÓÅÏȼ¶ÊÇͨ¹ýµ÷ÓÃÏ̶߳ÔÏóµÄsetPriority()·½·¨£¬ÈçÉÏÀýÖУ¬ÉèÖÃÓÅÏȼ¶µÄÓï¾äΪ£º


¡¡¡¡thread1 threadone=new thread1(); file://ÓÃThreadÀàµÄ×ÓÀà´´½¨Ị̈߳»
¡¡¡¡Thread threadtwo=new Thread(new thread2()); file://ÓÃRunnable½Ó¿ÚÀàµÄ¶ÔÏó´´½¨Ị̈߳»


¡¡¡¡threadone.setPriority(6); file://ÉèÖÃthreadoneµÄÓÅÏȼ¶6£»


¡¡¡¡threadtwo.setPriority(3); file://ÉèÖÃthreadtwoµÄÓÅÏȼ¶3£»


¡¡¡¡threadone.start(); threadtwo.start(); file://strat()·½·¨Æô¶¯Ị̈߳»


¡¡¡¡ÕâÑù£¬Ïß³Ìthreadone½«»áÓÅÏÈÓÚÏß³ÌthreadtwoÖ´ÐУ¬²¢½«Õ¼Óиü¶àµÄCPUʱ¼ä¡£¸ÃÀýÖУ¬ÓÅÏȼ¶ÉèÖ÷ÅÔÚÏß³ÌÆô¶¯Ç°£¬Ò²¿ÉÒÔÔÚÆô¶¯ºó½øÐÐÉèÖã¬ÒÔÂú×㲻ͬµÄÓÅÏȼ¶ÐèÇó¡£


¡¡¡¡Ï̵߳ģ¨Í¬²½£©¿ØÖÆ


¡¡¡¡Ò»¸öJava³ÌÐòµÄ¶àÏß³ÌÖ®¼ä¿ÉÒÔ¹²ÏíÊý¾Ý¡£µ±Ïß³ÌÒÔÒì²½·½Ê½·ÃÎʹ²ÏíÊý¾Ýʱ£¬ÓÐʱºòÊDz»°²È«µÄ»òÕß²»ºÍÂß¼­µÄ¡£±ÈÈ磬ͬһʱ¿ÌÒ»¸öÏß³ÌÔÚ¶ÁÈ¡Êý¾Ý£¬ÁíÍâÒ»¸öÏß³ÌÔÚ´¦ÀíÊý¾Ý£¬µ±´¦ÀíÊý¾ÝµÄÏß³ÌûÓеȵ½¶ÁÈ¡Êý¾ÝµÄÏ̶߳ÁÈ¡Íê±Ï¾ÍÈ¥´¦ÀíÊý¾Ý£¬±ØÈ»µÃµ½´íÎóµÄ´¦Àí½á¹û¡£ÕâºÍÎÒÃÇÇ°ÃæÌáµ½µÄ¶ÁÈ¡Êý¾ÝºÍ´¦ÀíÊý¾Ý²¢ÐжàÈÎÎñ²¢²»Ã¬¶Ü£¬Õâ¶ùÖ¸µÄÊÇ´¦ÀíÊý¾ÝµÄÏ̲߳»ÄÜ´¦Àíµ±Ç°»¹Ã»ÓжÁÈ¡½áÊøµÄÊý¾Ý£¬µ«ÊÇ¿ÉÒÔ´¦ÀíÆäËüµÄÊý¾Ý¡£


¡¡¡¡Èç¹ûÎÒÃDzÉÓöàÏß³Ìͬ²½¿ØÖÆ»úÖÆ£¬µÈµ½µÚÒ»¸öÏ̶߳ÁÈ¡ÍêÊý¾Ý£¬µÚ¶þ¸öÏ̲߳ÅÄÜ´¦Àí¸ÃÊý¾Ý£¬¾Í»á±ÜÃâ´íÎ󡣿ɼû£¬Ïß³Ìͬ²½ÊǶàÏ̱߳à³ÌµÄÒ»¸öÏ൱ÖØÒªµÄ¼¼Êõ¡£


¡¡¡¡ÔÚ½²Ï̵߳Äͬ²½¿ØÖÆÇ°ÎÒÃÇÐèÒª½»´úÈçϸÅÄ


¡¡¡¡1 ÓÃJava¹Ø¼ü×Ösynchonizedͬ²½¶Ô¹²ÏíÊý¾Ý²Ù×÷µÄ·½·¨


¡¡¡¡ÔÚÒ»¸ö¶ÔÏóÖУ¬ÓÃsynchonizedÉùÃ÷µÄ·½·¨ÎªÍ¬²½·½·¨¡£JavaÖÐÓÐÒ»¸öͬ²½Ä£ÐÍ-¼àÊÓÆ÷£¬¸ºÔð¹ÜÀíÏ̶߳ԶÔÏóÖеÄͬ²½·½·¨µÄ·ÃÎÊ£¬ËüµÄÔ­ÀíÊÇ£º¸³Óè¸Ã¶ÔÏóΨһһ°Ñ´Ô¿³×´£¬µ±¶à¸öÏ߳̽øÈë¶ÔÏó£¬Ö»ÓÐÈ¡µÃ¸Ã¶ÔÏóÔ¿³×µÄÏ̲߳ſÉÒÔ·ÃÎÊͬ²½·½·¨£¬ÆäËüÏß³ÌÔڸöÔÏóÖеȴý£¬Ö±µ½¸ÃÏß³ÌÓà wait()·½·¨·ÅÆúÕâ°ÑÔ¿³×£¬ÆäËüµÈ´ýµÄÏß³ÌÇÀÕ¼¸ÃÔ¿³×£¬ÇÀÕ¼µ½Ô¿³×µÄÏ̺߳ó²Å¿ÉµÃÒÔÖ´ÐУ¬¶øûÓÐÈ¡µÃÔ¿³×µÄÏß³ÌÈÔ±»×èÈûÔڸöÔÏóÖеȴý¡£
¡¡¡¡file://ÉùÃ÷ͬ²½µÄÒ»ÖÖ·½Ê½£º½«·½·¨ÉùÃ÷ͬ²½


¡¡¡¡class store


¡¡¡¡¡¡{


¡¡¡¡¡¡¡¡public synchonized void store_in()


¡¡¡¡¡¡¡¡{
¡¡¡¡¡¡¡¡¡¡¡­.


¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡public synchonized void store_out(){


¡¡¡¡¡¡¡¡ ¡¡ ¡­.}
¡¡¡¡¡¡¡¡}


¡¡¡¡2 ÀûÓÃwait()¡¢notify()¼°notifyAll()·½·¨·¢ËÍÏûϢʵÏÖÏ̼߳äµÄÏ໥ÁªÏµ


¡¡¡¡Java³ÌÐòÖжà¸öÏß³Ìͨ¹ýÏûÏ¢À´ÊµÏÖ»¥¶¯ÁªÏµµÄ£¬Õ⼸ÖÖ·½·¨ÊµÏÖÁËÏ̼߳äµÄÏûÏ¢·¢ËÍ¡£ÀýÈ綨ÒåÒ»¸ö¶ÔÏóµÄsynchonized ·½·¨£¬Í¬Ò»Ê±¿ÌÖ»Äܹ»ÓÐÒ»¸öÏ̷߳ÃÎʸöÔÏóÖеÄͬ²½·½·¨£¬ÆäËüÏ̱߳»×èÈû¡£Í¨³£¿ÉÒÔÓÃnotify()»ònotifyAll()·½·¨»½ÐÑÆäËüÒ»¸ö»òËùÓÐÏ̡߳£¶øʹÓÃwait()·½·¨À´Ê¹¸ÃÏ̴߳¦ÓÚ×èÈû״̬£¬µÈ´ýÆäËüµÄÏß³ÌÓÃnotify()»½ÐÑ¡£


¡¡¡¡Ò»¸öʵ¼ÊµÄÀý×Ó¾ÍÊÇÉú²úºÍÏúÊÛ£¬Éú²úµ¥Ôª½«²úÆ·Éú²ú³öÀ´·ÅÔÚ²Ö¿âÖУ¬ÏúÊÛµ¥ÔªÔò´Ó²Ö¿âÖÐÌá×ß²úÆ·£¬ÔÚÕâ¸ö¹ý³ÌÖУ¬ÏúÊÛµ¥Ôª±ØÐëÔÚ²Ö¿âÖÐÓвúƷʱ²ÅÄÜÌá»õ£»Èç¹û²Ö¿âÖÐûÓвúÆ·£¬ÔòÏúÊÛµ¥Ôª±ØÐëµÈ´ý¡£


¡¡¡¡³ÌÐòÖУ¬¼ÙÈçÎÒÃǶ¨ÒåÒ»¸ö²Ö¿âÀàstore£¬¸ÃÀàµÄʵÀý¶ÔÏó¾ÍÏ൱Óڲֿ⣬ÔÚstoreÀàÖж¨ÒåÁ½¸ö³ÉÔ±·½·¨£ºstore_in()£¬ÓÃÀ´Ä£Äâ²úÆ·ÖÆÔìÕßÍù²Ö¿âÖÐÌí¼Ó²úÆ·£»strore_out()·½·¨ÔòÓÃÀ´Ä£ÄâÏúÊÛÕß´Ó²Ö¿âÖÐÈ¡×ß²úÆ·¡£È»ºó¶¨ÒåÁ½¸öÏß³ÌÀࣺcustomerÀ࣬ÆäÖеÄrun ()·½·¨Í¨¹ýµ÷ÓòֿâÀàÖеÄstore_out()´Ó²Ö¿âÖÐÈ¡×ß²úÆ·£¬Ä£ÄâÏúÊÛÕߣ»ÁíÍâÒ»¸öÏß³ÌÀàproducerÖеÄrun()·½·¨Í¨¹ýµ÷ÓòֿâÀàÖÐµÄ store_in()·½·¨Ïò²Ö¿âÌí¼Ó²úÆ·£¬Ä£Äâ²úÆ·ÖÆÔìÕß¡£ÔÚÖ÷ÀàÖд´½¨²¢Æô¶¯Ị̈߳¬ÊµÏÖÏò²Ö¿âÖÐÌí¼Ó²úÆ·»òÈ¡×ß²úÆ·¡£


¡¡¡¡Èç¹û²Ö¿âÀàÖеÄstore_in() ºÍstore_out()·½·¨²»ÉùÃ÷ͬ²½£¬Õâ¾ÍÊǸöÒ»°ãµÄ¶àỊ̈߳¬ÎÒÃÇÖªµÀ£¬Ò»¸ö³ÌÐòÖеĶàÏß³ÌÊǽ»ÌæÖ´Ðеģ¬ÔËÐÐÒ²ÊÇÎÞÐòµÄ£¬ÕâÑù£¬¾Í¿ÉÄÜ´æÔÚÕâÑùµÄÎÊÌ⣺


¡¡¡¡²Ö¿âÖÐûÓвúÆ·ÁË£¬ÏúÊÛÕß»¹ÔÚ²»¶Ï¹â¹Ë£¬¶øÇÒ»¹²»Í£µÄÔÚ´È¡´²úÆ·£¬ÕâÔÚÏÖʵÖÐÊDz»¿É˼ÒåµÄ£¬ÔÚ³ÌÐòÖоͱíÏÖΪ¸ºÖµ£»Èç¹û½«²Ö¿âÀàÖÐµÄ stroe_in()ºÍstore_out()·½·¨ÉùÃ÷ͬ²½£¬ÈçÉÏÀýËùʾ£º¾Í¿ØÖÆÁËͬһʱ¿ÌÖ»ÄÜÓÐÒ»¸öÏ̷߳ÃÎʲֿâ¶ÔÏóÖеÄͬ²½·½·¨£»¼´Ò»¸öÉú²úÀàÏ̷߳ÃÎʱ»ÉùÃ÷Ϊͬ²½µÄstore_in()·½·¨Ê±£¬ÆäËüÏ߳̽«²»Äܹ»·ÃÎʶÔÏóÖеÄstore_out()ͬ²½·½·¨£¬µ±È»Ò²²»ÄÜ·ÃÎÊstore_in()·½·¨¡£±ØÐëµÈµ½¸ÃÏ̵߳÷ÓÃwait()·½·¨·ÅÆúÔ¿³×£¬ÆäËüÏ̲߳ÅÓлú»á·ÃÎÊͬ²½·½·¨¡£


¡¡¡¡Õâ¸öÔ­Àíʵ¼ÊÖÐÒ²ºÜºÃÀí½â£¬µ±Éú²úÕߣ¨producer£©È¡µÃ²Ö¿âΨһµÄÔ¿³×£¬¾ÍÏò²Ö¿âÖÐÌí·Å²úÆ·£¬´ËʱÆäËüµÄÏúÊÛÕߣ¨customer£¬¿ÉÒÔÊÇÒ»¸ö»ò¶à¸ö£©²»¿ÉÄÜÈ¡µÃÔ¿³×£¬Ö»Óе±Éú²úÕßÌí·Å²úÆ·½áÊø£¬½»»¹Ô¿³×²¢ÇÒ֪ͨÏúÊÛÕߣ¬²»Í¬µÄÏúÊÛÕ߸ù¾ÝÈ¡µÃÔ¿³×µÄÏȺóÓë·ñ¾ö¶¨ÊÇ·ñ¿ÉÒÔ½øÈë²Ö¿âÖÐÌá×ß²úÆ·¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ