Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB
ÈÈÃűêÇ©£º c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 ×îÐÂÎÄÕ :

JavaỊ̈߳ºÐÂÌØÕ÷ Ëø£¨ÉÏ£©

JavaỊ̈߳ºÐÂÌØÕ÷-Ëø£¨ÉÏ£©
 
ÔÚJava5ÖУ¬×¨ÃÅÌṩÁËËø¶ÔÏó£¬ÀûÓÃËø¿ÉÒÔ·½±ãµÄʵÏÖ×ÊÔ´µÄ·âËø£¬ÓÃÀ´¿ØÖƶԾºÕù×ÊÔ´²¢·¢·ÃÎʵĿØÖÆ£¬ÕâЩÄÚÈÝÖ÷Òª¼¯ÖÐÔÚjava.util.concurrent.locks °üÏÂÃæ£¬ÀïÃæÓÐÈý¸öÖØÒªµÄ½Ó¿ÚCondition¡¢Lock¡¢ReadWriteLock¡£
 
Condition
Condition ½« Object ¼àÊÓÆ÷·½·¨£¨wait¡¢notify ºÍ notifyAll£©·Ö½â³É½ØÈ»²»Í¬µÄ¶ÔÏó£¬ÒÔ±ãͨ¹ý½«ÕâЩ¶ÔÏóÓëÈÎÒâ Lock ʵÏÖ×éºÏʹÓã¬ÎªÃ¿¸ö¶ÔÏóÌṩ¶à¸öµÈ´ý set £¨wait-set£©¡£
Lock
Lock ʵÏÖÌṩÁ˱ÈʹÓà synchronized ·½·¨ºÍÓï¾ä¿É»ñµÃµÄ¸ü¹ã·ºµÄËø¶¨²Ù×÷¡£
ReadWriteLock
ReadWriteLock ά»¤ÁËÒ»¶ÔÏà¹ØµÄËø¶¨£¬Ò»¸öÓÃÓÚÖ»¶Á²Ù×÷£¬ÁíÒ»¸öÓÃÓÚдÈë²Ù×÷¡£
 
ÓйØËøµÄ½éÉÜ,APIÎĵµ½â˵ºÜ¶à£¬¿´µÃºÜ·³£¬»¹ÊÇ¿´¸öÀý×ÓÔÙ¿´Îĵµ±È½ÏÈÝÒ×Àí½â¡£
 
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* JavaỊ̈߳ºËø
*
* @author leizhimin 2009-11-5 10:57:29
*/
public class Test {
      &n ......

JavaỊ̈߳ºÐÂÌØÕ÷ Ëø£¨Ï£©

JavaỊ̈߳ºÐÂÌØÕ÷-Ëø£¨Ï£©
 
ÔÚÉÏÎÄÖÐÌáµ½ÁËLock½Ó¿ÚÒÔ¼°¶ÔÏó£¬Ê¹ÓÃËü£¬ºÜÓÅÑŵĿØÖÆÁ˾ºÕù×ÊÔ´µÄ°²È«·ÃÎÊ£¬µ«ÊÇÕâÖÖËø²»Çø·Ö¶Áд£¬³ÆÕâÖÖËøÎªÆÕÍ¨Ëø¡£ÎªÁËÌá¸ßÐÔÄÜ£¬JavaÌṩÁ˶ÁÐ´Ëø£¬ÔÚ¶ÁµÄµØ·½Ê¹ÓöÁËø£¬ÔÚдµÄµØ·½Ê¹ÓÃÐ´Ëø£¬Áé»î¿ØÖÆ£¬ÔÚÒ»¶¨³Ì¶ÈÉÏÌá¸ßÁ˳ÌÐòµÄÖ´ÐÐЧÂÊ¡£
 
JavaÖжÁÐ´ËøÓиö½Ó¿Újava.util.concurrent.locks.ReadWriteLock£¬Ò²ÓоßÌåµÄʵÏÖReentrantReadWriteLock£¬ÏêϸµÄAPI¿ÉÒԲ鿴JavaAPIÎĵµ¡£
 
ÏÂÃæÕâ¸öÀý×ÓÊÇÔÚÎÄÀý×ӵĻù´¡ÉÏ£¬½«ÆÕÍ¨Ëø¸ÄΪ¶ÁÐ´Ëø£¬²¢Ìí¼ÓÕË»§Óà¶î²éѯµÄ¹¦ÄÜ£¬´úÂëÈçÏ£º
 
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
/**
* JavaỊ̈߳ºËø
*
* @author leizhimin 2009-11-5 10:57:29
*/
public class Test {
        public static void main(String[] args) {
                //´´½ ......

JavaỊ̈߳ºÐÂÌØÕ÷ ÐźÅÁ¿

JavaỊ̈߳ºÐÂÌØÕ÷-ÐźÅÁ¿
 
JavaµÄÐźÅÁ¿Êµ¼ÊÉÏÊÇÒ»¸ö¹¦ÄÜÍê±ÏµÄ¼ÆÊýÆ÷£¬¶Ô¿ØÖÆÒ»¶¨×ÊÔ´µÄÏû·ÑÓë»ØÊÕÓÐןÜÖØÒªµÄÒâÒ壬ÐźÅÁ¿³£³£ÓÃÓÚ¶àÏ̵߳ĴúÂëÖУ¬²¢ÄÜ¼à¿ØÓжàÉÙÊýÄ¿µÄÏ̵߳ȴý»ñÈ¡×ÊÔ´£¬²¢ÇÒͨ¹ýÐźÅÁ¿¿ÉÒÔµÃÖª¿ÉÓÃ×ÊÔ´µÄÊýÄ¿µÈµÈ£¬ÕâÀï×ÜÊÇÔÚÇ¿µ÷“ÊýÄ¿”¶þ×Ö£¬µ«²»ÄÜÖ¸³öÀ´ÓÐÄÄЩÔڵȴý£¬ÄÄЩ×ÊÔ´¿ÉÓá£
 
Òò´Ë£¬±¾ÈËÈÏΪ£¬Õâ¸öÐźÅÁ¿ÀàÈç¹ûÄÜ·µ»ØÊýÄ¿£¬»¹ÄÜÖªµÀÄÄЩ¶ÔÏóÔڵȴý£¬ÄÄЩ×ÊÔ´¿ÉʹÓ㬾ͷdz£ÍêÃÀÁË£¬½ö½öÄõ½ÕâЩ¸ÅÀ¨ÐÔµÄÊý×Ö£¬¶Ô¾«È·¿ØÖÆÒâÒå²»ÊǺܴó¡£Ä¿Ç°»¹Ã»Ïëµ½¸üºÃµÄÓ÷¨¡£
 
ÏÂÃæÊÇÒ»¸ö¼òµ¥Àý×Ó£º
 
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;
/**
* JavaỊ̈߳ºÐÂÌØÕ÷-ÐźÅÁ¿
*
* @author leizhimin 2009-11-5 13:44:45
*/
public class Test {
        public static void main(String[] args) {
                MyPool myPool = new MyPool(20);
  &nb ......

JavaỊ̈߳ºÐÂÌØÕ÷ ×èÈû¶ÓÁÐ

JavaỊ̈߳ºÐÂÌØÕ÷-×èÈû¶ÓÁÐ
 
×èÈû¶ÓÁÐÊÇJava5Ïß³ÌÐÂÌØÕ÷ÖеÄÄÚÈÝ£¬Java¶¨ÒåÁË×èÈû¶ÓÁеĽӿÚjava.util.concurrent.BlockingQueue£¬×èÈû¶ÓÁеĸÅÄîÊÇ£¬Ò»¸öÖ¸¶¨³¤¶ÈµÄ¶ÓÁУ¬Èç¹û¶ÓÁÐÂúÁË£¬Ìí¼ÓÐÂÔªËØµÄ²Ù×÷»á±»×èÈûµÈ´ý£¬Ö±µ½ÓпÕλΪֹ¡£Í¬Ñù£¬µ±¶ÓÁÐΪ¿Õʱºò£¬ÇëÇó¶ÓÁÐÔªËØµÄ²Ù×÷ͬÑù»á×èÈûµÈ´ý£¬Ö±µ½ÓпÉÓÃÔªËØÎªÖ¹¡£
 
ÓÐÁËÕâÑùµÄ¹¦ÄÜ£¬¾ÍΪ¶àÏ̵߳ÄÅŶӵȺòµÄÄ£ÐÍʵÏÖ¿ª±ÙÁ˱ã½ÝͨµÀ£¬·Ç³£ÓÐÓá£
 
java.util.concurrent.BlockingQueue¼Ì³ÐÁËjava.util.Queue½Ó¿Ú£¬¿ÉÒԲο´APIÎĵµ¡£
 
ÏÂÃæ¸ø³öÒ»¸ö¼òµ¥Ó¦ÓõÄÀý×Ó£º
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ArrayBlockingQueue;
/**
* JavaỊ̈߳ºÐÂÌØÕ÷-×èÈû¶ÓÁÐ
*
* @author leizhimin 2009-11-5 14:59:15
*/
public class Test {
        public static void main(String[] args) throws InterruptedException {
                BlockingQueue bqueue = new ArrayBlockingQueue(20);
  &nb ......

JavaỊ̈߳ºÐÂÌØÕ÷ ×èÈûÕ»

JavaỊ̈߳ºÐÂÌØÕ÷-×èÈûÕ»
 
¶ÔÓÚ×èÈûÕ»£¬Óë×èÈû¶ÓÁÐÏàËÆ¡£²»Í¬µãÔÚÓÚÕ»ÊÇ“ºóÈëÏȳö”µÄ½á¹¹£¬Ã¿´Î²Ù×÷µÄÊÇÕ»¶¥£¬¶ø¶ÓÁÐÊÇ“ÏȽøÏȳö”µÄ½á¹¹£¬Ã¿´Î²Ù×÷µÄÊǶÓÁÐÍ·¡£
 
ÕâÀïÒªÌØ±ð˵Ã÷Ò»µãµÄÊÇ£¬×èÈûÕ»ÊÇJava6µÄÐÂÌØÕ÷¡£¡¢
 
JavaΪ×èÈûÕ»¶¨ÒåÁ˽ӿڣºjava.util.concurrent.BlockingDeque£¬ÆäʵÏÖÀàÒ²±È½Ï¶à£¬¾ßÌå¿ÉÒԲ鿴JavaAPIÎĵµ¡£
 
ÏÂÃæ¿´Ò»¸ö¼òµ¥Àý×Ó£º
 
import java.util.concurrent.BlockingDeque;
import java.util.concurrent.LinkedBlockingDeque;
/**
* JavaỊ̈߳ºÐÂÌØÕ÷-×èÈûÕ»
*
* @author leizhimin 2009-11-5 15:34:29
*/
public class Test {
        public static void main(String[] args) throws InterruptedException {
                BlockingDeque bDeque = new LinkedBlockingDeque(20);
                for (int i = 0; i < 30; i++) {
&nbs ......

JavaỊ̈߳ºÐÂÌØÕ÷ Ìõ¼þ±äÁ¿

JavaỊ̈߳ºÐÂÌØÕ÷-Ìõ¼þ±äÁ¿
 
Ìõ¼þ±äÁ¿ÊÇJava5Ïß³ÌÖкÜÖØÒªµÄÒ»¸ö¸ÅÄ¹ËÃû˼Ò壬Ìõ¼þ±äÁ¿¾ÍÊDZíʾÌõ¼þµÄÒ»ÖÖ±äÁ¿¡£µ«ÊDZØÐë˵Ã÷£¬ÕâÀïµÄÌõ¼þÊÇûÓÐʵ¼Êº¬ÒåµÄ£¬½ö½öÊǸö±ê¼Ç¶øÒÑ£¬²¢ÇÒÌõ¼þµÄº¬ÒåÍùÍùͨ¹ý´úÂëÀ´¸³ÓèÆäº¬Òå¡£
 
ÕâÀïµÄÌõ¼þºÍÆÕͨÒâÒåÉϵÄÌõ¼þ±í´ïʽÓÐ×ÅÌìÈÀÖ®±ð¡£
 
Ìõ¼þ±äÁ¿¶¼ÊµÏÖÁËjava.util.concurrent.locks.Condition½Ó¿Ú£¬Ìõ¼þ±äÁ¿µÄʵÀý»¯ÊÇͨ¹ýÒ»¸öLock¶ÔÏóÉϵ÷ÓÃnewCondition()·½·¨À´»ñÈ¡µÄ£¬ÕâÑù£¬Ìõ¼þ¾ÍºÍÒ»¸öËø¶ÔÏó°ó¶¨ÆðÀ´ÁË¡£Òò´Ë£¬JavaÖеÄÌõ¼þ±äÁ¿Ö»ÄܺÍËøÅäºÏʹÓã¬À´¿ØÖƲ¢·¢³ÌÐò·ÃÎʾºÕù×ÊÔ´µÄ°²È«¡£
 
Ìõ¼þ±äÁ¿µÄ³öÏÖÊÇΪÁ˸ü¾«Ï¸¿ØÖÆÏ̵߳ȴýÓ뻽ÐÑ£¬ÔÚJava5֮ǰ£¬Ï̵߳ĵȴýÓ뻽ÐÑÒÀ¿¿µÄÊÇObject¶ÔÏóµÄwait()ºÍnotify()/notifyAll()·½·¨£¬ÕâÑùµÄ´¦Àí²»¹»¾«Ï¸¡£
 
¶øÔÚJava5ÖУ¬Ò»¸öËø¿ÉÒÔÓжà¸öÌõ¼þ£¬Ã¿¸öÌõ¼þÉÏ¿ÉÒÔÓжà¸öÏ̵߳ȴý£¬Í¨¹ýµ÷ÓÃawait()·½·¨£¬¿ÉÒÔÈÃÏß³ÌÔÚ¸ÃÌõ¼þϵȴý¡£µ±µ÷ÓÃsignalAll()·½·¨£¬ÓÖ¿ÉÒÔ»½ÐѸÃÌõ¼þϵĵȴýµÄÏ̡߳£ÓйØCondition½Ó¿ÚµÄAPI¿ÉÒÔ¾ßÌå²Î¿¼JavaAPIÎĵµ¡£
 
Ìõ¼þ±äÁ¿±È½Ï³éÏó£¬Ô­ÒòÊÇËû²»ÊÇ×ÔÈ»ÓïÑÔÖеÄÌõ¼þ¸ÅÄ¶øÊdzÌÐò¿ØÖƵÄÒ»ÖÖÊֶΡ£
 
Ï ......
×ܼǼÊý:40319; ×ÜÒ³Êý:6720; ÿҳ6 Ìõ; Ê×Ò³ ÉÏÒ»Ò³ [2412] [2413] [2414] [2415] 2416 [2417] [2418] [2419] [2420] [2421]  ÏÂÒ»Ò³ βҳ
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ