Java Concurrent°üѧϰ֮BlockingQueue
BlockingQueueÊÇÒ»¸ö½Ó¿Ú£¬Ëü´ÓQueue¼Ì³Ð¶øÀ´£¬
°üº¬ÁËQueueµÄËùÓй¦ÄÜ£¬²¢ÔÚQueueµÄ»ù´¡ÉÏÌṩÁË2¸öÐµĹ¦ÄÜ£º
1. ¼ìË÷ÔªËØÊ±µÈ´ý¶ÓÁбäΪ·Ç¿Õ
2. ´æ´¢ÔªËØÊ±µÈ´ý¿Õ¼ä±äµÃ¿ÉÓá£
ÏÂÃæ³Â¼Ò»Ð©JDKÎĵµÖйØÓÚBlockingQueueµÄ½éÉÜ£º
BlockingQueue ¿ÉÒÔÊÇÏÞ¶¨ÈÝÁ¿µÄ¡£ËüÔÚÈÎÒâ¸ø¶¨Ê±¼ä¶¼¿ÉÒÔÓÐÒ»¸ö remainingCapacity£¬³¬³ö´ËÈÝÁ¿£¬±ãÎÞ·¨ÎÞ×èÈûµØ put ¶îÍâµÄÔªËØ¡£Ã»ÓÐÈκÎÄÚ²¿ÈÝÁ¿Ô¼ÊøµÄ BlockingQueue ×ÜÊDZ¨¸æ Integer.MAX_VALUE µÄÊ£ÓàÈÝÁ¿¡£
BlockingQueue ʵÏÖÖ÷ÒªÓÃÓÚÉú²úÕß-ʹÓÃÕß¶ÓÁУ¬µ«ËüÁíÍ⻹֧³Ö Collection ½Ó¿Ú¡£Òò´Ë£¬¾ÙÀýÀ´Ëµ£¬Ê¹Óà remove(x) ´Ó¶ÓÁÐÖÐÒÆ³ýÈÎÒâÒ»¸öÔªËØÊÇÓпÉÄܵġ£È»¶ø£¬ÕâÖÖ²Ù×÷ͨ³£²» »áÓÐЧִÐУ¬Ö»ÄÜÓмƻ®µØÅ¼¶ûʹÓ㬱ÈÈçÔÚÈ¡ÏûÅŶÓÐÅϢʱ¡£
BlockingQueue ʵÏÖÊÇḬ̈߳²È«µÄ¡£ËùÓÐÅŶӷ½·¨¶¼¿ÉÒÔʹÓÃÄÚ²¿Ëø¶¨»òÆäËûÐÎʽµÄ²¢·¢¿ØÖÆÀ´×Ô¶¯´ïµ½ËüÃǵÄÄ¿µÄ¡£È»¶ø£¬´óÁ¿µÄ Collection ²Ù×÷£¨addAll¡¢containsAll¡¢retainAll ºÍ removeAll£©Ã»ÓÐ ±ØÒª×Ô¶¯Ö´ÐУ¬³ý·ÇÔÚʵÏÖÖÐÌØ±ð˵Ã÷¡£Òò´Ë£¬¾ÙÀýÀ´Ëµ£¬ÔÚÖ»Ìí¼ÓÁË c ÖеÄÒ»Ð©ÔªËØºó£¬addAll(c) ÓпÉÄÜʧ°Ü£¨Å׳öÒ»¸öÒì³££©¡£
BlockingQueue ʵÖÊÉϲ» Ö§³ÖʹÓÃÈκÎÒ»ÖÖ“close”»ò“shutdown”²Ù×÷À´Ö¸Ê¾²»ÔÙÌí¼ÓÈκÎÏî¡£ÕâÖÖ¹¦ÄܵÄÐèÇóºÍʹÓÃÓÐÒÀÀµÓÚʵÏÖµÄÇãÏò¡£ÀýÈ磬һÖÖ³£ÓõIJßÂÔÊÇ£º¶ÔÓÚÉú²úÕߣ¬²åÈëÌØÊâµÄ end-of-stream »ò poison ¶ÔÏ󣬲¢¸ù¾ÝʹÓÃÕß»ñÈ¡ÕâЩ¶ÔÏóµÄʱ¼äÀ´¶ÔËüÃǽøÐнâÊÍ¡£
ÔÚJDK1.5ÖÐÌṩÁËBlockingQueueµÄÈçÏÂʵÏÖÀࣺ
1. ArrayBlockingQueue
2. LinkedBlockingQueue
3. PriorityBlockingQueue
4. SynchronousQueue
5. DelayQueue
ÏÂÃæÎÒÃÇÀ´Ò»Ò»½éÉÜÕâЩBolackingQueueʵÏÖµÄÌØµã£º
1. ArrayBlockingQueue
¹ÊÃû˼Ò⣬ArrayBlockingQueueÊÇÒ»¸öÓÉÊý×éÖ§³ÖµÄÓнç×èÈû¶ÓÁС£´Ë¶ÓÁа´ FIFO£¨ÏȽøÏȳö£©ÔÔò¶ÔÔªËØ½øÐÐÅÅÐò¡£¶ÓÁеÄÍ·²¿ ÊÇÔÚ¶ÓÁÐÖдæÔÚʱ¼ä×µÄÔªËØ¡£¶ÓÁеÄβ²¿ ÊÇÔÚ¶ÓÁÐÖдæÔÚʱ¼ä×î¶ÌµÄÔªËØ¡£ÐÂÔªËØ²åÈëµ½¶ÓÁеÄβ²¿£¬¶ÓÁмìË÷²Ù×÷ÔòÊÇ´Ó¶ÓÁÐÍ·²¿¿ªÊ¼»ñµÃÔªËØ¡£
ÕâÊÇÒ»¸öµäÐ͵ēÓн绺´æÇø”£¬¹Ì¶¨´óСµÄÊý×éÔÚÆäÖб£³ÖÉú²úÕß²åÈëµÄÔªËØºÍʹÓÃÕßÌáÈ¡µÄÔªËØ¡£Ò»µ©´´½¨ÁËÕâÑùµÄ»º´æÇø£¬¾Í²»ÄÜÔÙÔö¼ÓÆäÈÝÁ¿¡£ÊÔͼÏòÒÑÂú¶ÓÁÐÖзÅÈëÔªËØ»áµ¼Ö·ÅÈë²Ù×÷ÊÜ×èÈû£»ÊÔͼ´Ó¿Õ¶ÓÁÐÖмìË÷ÔªËØ½«µ¼ÖÂÀàËÆ×èÈû¡£
´ËÀàÖ§³Ö¶ÔµÈ´ýµ
Ïà¹ØÎĵµ£º
native2ascii.exe ÊÇ Java µÄÒ»¸öÎļþתÂ빤¾ß£¬Êǽ«ÌØÊâ¸÷ÒìµÄÄÚÈÝ ×ªÎª ÓÃÖ¸¶¨µÄ±àÂë±ê×¼ÎÄÌåÐÎʽͳһµÄ±íÏÖ³öÀ´£¬Ëüͨ³£Î»ÓÚ JDK_home\bin Ŀ¼Ï£¬°²×°ºÃ Java SE ºó£¬¿ÉÔÚÃüÁîÐÐÖ±½ÓʹÓà native2ascii ÃüÁî½øÐÐתÂ룬ʾÀý£º
native2ascii -encoding 8859_1 c:\test.txt c:\temp.txt
½« test.txt ÎļþÄÚÈÝÓà 8859_1 × ......
1.Duplicated Code
´úÂëÖØ¸´¼¸ºõÊÇ×î³£¼ûµÄÒìζÁË¡£ËûÒ²ÊÇRefactoringµÄÖ÷ҪĿ±êÖ®Ò»¡£´úÂëÖØ¸´ÍùÍùÀ´×ÔÓÚcopy-and-pasteµÄ±à³Ì·ç¸ñ¡£ÓëËûÏà¶ÔÓ¦OAOOÊÇÒ»¸öºÃϵͳµÄÖØÒª±êÖ¾¡£
2.Long method
ËüÊÇ´«Í³½á¹¹»¯µÄ“ÒŶ¾”¡£Ò»¸ö·½·¨Ó¦µ±¾ßÓÐ×ÔÎÒ¶ÀÁ¢µÄÒâͼ£¬²»Òª°Ñ¼¸¸öÒâͼ·ÅÔÚÒ»Æð¡£ ......
±¾ÎÄÕª×Ô£º http://www.ibm.com/developerworks/cn/java/j-noaccent.html
ѧϰһÖÖеıà³ÌÓïÑÔ±ÈѧϰеĿÚÍ·ÓïÑÔÒªÈÝÒ׵öࡣȻ¶ø£¬ÔÚÕâÁ½ÖÖѧϰ¹ý³ÌÖУ¬¶¼Òª¸¶³ö¶îÍâµÄŬÁ¦È¥Ñ§Ï°²»´ø¿ÚÒôµØËµÐÂÓïÑÔ¡£Èç¹ûÄúÊìϤ C »ò C++£¬ÄÇôѧϰ Java ÓïÑÔ²¢²»À§ÄÑ£¬Õâ¾ÍÏñÊÇ»á˵ÈðµäÓïµÄÈËȥѧµ¤ÂóÓïÒ»Ñù¡£ÓïÑÔËäÓв»Í¬£¬µ«Óֱ˴˻ ......
public static void main(string[] args)
{
int[] arrayInt=new int[] {1,2,3,4,5}
ArrayList alist =ArrayList();
//·½·¨Ò»
foreach(int i in alist)
{
&nbs ......