JAVA½ø½×£ºÒ»¸ö¼òµ¥Thread»º³å³ØµÄʵÏÖ
ÔÚÓ¦ÓÃÖУ¬ÎÒÃdz£³£ÐèÒªThread»º³å³ØÀ´×öһЩÊÂÒÔÌá¸ß³ÌÐòµÄЧÂʺͲ¢·¢ÐÔ¡£±¾ÎÄÑÝʾÁËÈçºÎÀûÓÃQueueÕâÖÖÊý¾Ý½á¹¹ÊµÏÖÒ»¸ö¼òµ¥µÄThread»º³å³Ø¡£
Ò»¸öThread»º³å³Ø¿ÉÒÔÉè¼Æ³ÉÒÔÏÂÕâÑù£º»º³å³ØÓɼ¸¸ö¹¤×÷ThreadºÍÒ»¸öQueue×é³É£¬Client¸ºÔð°ÑÈÎÎñ·Åµ½QueueÀïÃæ£¨put·½·¨£©£¬¶ø¹¤×÷Thread¾ÍÒÀ´ÎÈ¡³öÕâЩÈÎÎñ²¢Ö´ÐÐËüÃÇ£¨get·½·¨£©¡£
QueueµÄÒ»¸ö¾µäʵÏÖÊÇʹÓÃÒ»¸öÑ»·Êý×飨Õâ¸öʵÏÖÔںܶàÊý¾Ý½á¹¹µÄÊéÉ϶¼ÓнéÉÜ£©£¬ÈçÒ»¸ö´óСΪsizeµÄÊý×飬Õâ¸öÑ»·Êý×é¿ÉÒÔ±»ÏëÏó³ÉÊ×βÏàÁ¬µÄÒ»¸ö»·¡£oldestÖ¸ÏòQueueÖÐ×îÀϵÄÊý¾ÝËùÔÚµÄλÖã¬nextÖ¸ÏòÏÂÒ»¸ö¿ÉÒÔ·ÅÐÂÊý¾ÝµÄλÖá£
·ÅÈëÒ»¸öÐÂÊý¾Ýµ½nextµÄλÖúó£¬ÐèÒª¸üÐÂnext£ºnext = (next + 1) % size;
´ÓoldestλÖÃÈ¡³öÒ»¸öÊý¾Ýºó£¬ÐèÒª¸üÐÂoldest£ºoldest = (oldest + 1) % size;
µ±oldest == nextµÄʱºò£¬QueueΪ¿Õ£¬
µ±(next + 1) % size == oldestµÄʱºò£¬QueueΪÂú¡£
£¨×¢Ò⣺ΪÁËÇø·ÖQueueΪ¿ÕºÍΪÂúµÄÇé¿ö£¬Êµ¼ÊÉÏQueueÀïÃæ×î¶àÄÜ·Åsize-1¸öÊý¾Ý¡££©
ÒòΪÕâ¸öQueue»áͬʱ±»¶à¸öÏ̷߳ÃÎÊ£¬ÐèÒª¿¼ÂÇÔÚÕâÖÖÇé¿öÏÂQueueÈçºÎ¹¤×÷¡£Ê×ÏÈ£¬QueueÐèÒªÊÇḬ̈߳²È«µÄ£¬¿ÉÒÔÓÃJavaÀïµÄsynchronized¹Ø¼ü×ÖÀ´È·±£Í¬Ê±Ö»ÓÐÒ»¸öThreadÔÚ·ÃÎÊQueue.
ÎÒÃÇ»¹¿ÉÒÔ×¢Òâµ½µ±QueueΪ¿ÕµÄʱºò£¬get²Ù×÷ÊÇÎÞ·¨½øÐе컵±QueueΪÂúµÄʱºò£¬put²Ù×÷ÓÖÊÇÎÞ·¨½øÐеġ£ÔÚ¶àÏ̷߳ÃÎÊÓöµ½ÕâÖÖÇé¿öʱ£¬Ò»°ãÏ£ÍûÖ´ÐвÙ×÷µÄÏ߳̿ÉÒԵȴý£¨block£©Ö±µ½¸Ã²Ù×÷¿ÉÒÔ½øÐÐÏÂÈ¥¡£±ÈÈ磬µ«Ò»¸öThreadÔÚÒ»¸ö¿ÕQueueÉÏÖ´ÐÐget·½·¨µÄʱºò£¬Õâ¸ö ThreadÓ¦µ±µÈ´ý(block)£¬Ö±µ½ÁíÍâµÄThreadÖ´ÐиÃQueueµÄput·½·¨ºó£¬ÔÙ¼ÌÐøÖ´ÐÐÏÂÈ¥¡£ÔÚJavaÀïÃæ£¬Object¶ÔÏóµÄ wait(),notify()·½·¨ÌṩÁËÕâÑùµÄ¹¦ÄÜ¡£
°ÑÉÏÃæµÄÄÚÈݽáºÏÆðÀ´£¬¾ÍÊÇÒ»¸öSyncQueueµÄÀࣺ
public class SyncQueue {
public SyncQueue(int size) {
_array = new Object[size];
_size = size;
_oldest = 0;
_next = 0;
}
public synchronized void put(Object o) {
while (full()) {
try {
wait();
} catch (InterruptedException ex) {
throw new ExceptionAdapter(ex);
}
}
_array[_next] 
Ïà¹ØÎĵµ£º
Java ¶¨ÒåµÄλÔËË㣨bitwise operators £©Ö±½Ó¶ÔÕûÊýÀàÐ͵Äλ½øÐвÙ×÷£¬ÕâЩÕûÊýÀàÐͰüÀ¨long£¬int£¬short£¬char£¬and byte ¡£±í4-2 ÁгöÁËλÔËË㣺
±í4.2 λÔËËã·û¼°Æä½á¹û
ÔËËã·û ½á¹û
~ °´Î»·Ç£¨NOT£©£¨Ò»ÔªÔËË㣩
& °´Î»Ó루AND£©
| °´Î»»ò£¨OR£©
^ °´Î»Òì»ò£¨XOR£©
>> ÓÒÒÆ
>>> ÓÒÒ ......
/**
* @author ºýÍ¿¹í
* ÔÚ½¨Á¢Á¬½Ó֮ǰÐèҪһЩ׼±¸¹¤×÷£º
* ÔÚ¿ØÖÆÃæ°åÉÏͨ¹ý“¹ÜÀí¹¤¾ß”µÄ“Êý¾ÝÔ´(ODBC)”´ò¿ª“ODBCÊý¾ÝÔ´¹ÜÀíÆ÷”¶Ô»°¿ò£¬
* µ¥»÷“ϵͳDSN”Ñ¡Ï£¬È»ºóµ¥»÷“Ìí¼Ó”°´Å¥£¬µÃµ½“´´½¨Êý¾ÝÔ´”¶Ô»°¿ò£¬
......
£¨1£©¡¢¸¡µãÊý¾«È·¼ÆËã
ʤÀûÓÍÌïÈýÁ÷ºÏÒ»ÏîÄ¿ÖÐÒ»Ö±´æÔÚÒ»¸öÎÊÌ⣬¾ÍÊÇÿ´Î±¨±íͳ¼ÆµÄÎï×ʽð¶îºÍʵ¼ÊµÄ½ð¶îÒª²îÄÇô¼¸·ÖÇ®£¬ºÍʵ¼Ê½ð¶î²»Ò»Ö£¬Èÿͻ§¾õµÃ×ÜÊDz»ÄÇÃ´Êæ·þ£¬ÔÒòÊÇÒòΪÎÒÃÇʹÓÃjavaµÄ¸¡µãÀàÐÍdoubleÀ´¶¨ÒåÎï×ʽð¶î£¬²¢ÇÒÔÚ±¨±íͳ¼ÆÖÐÎÒÃǾ³£Òª½øÐÐһЩÔËË㣬µ«JavaÖи¡µãÊý£¨double¡¢float£©µÄ¼ÆËãÊǷǾ«È· ......
¡¡¡¡¶ÔÓÚ Java ÓïÑÔ¿ª·¢ÈËÔ±À´Ëµ£¬ÐÅÏ¢¹ýÁ¿ÊÇÒ»¸öÕæÕýµÄÎÊÌ⡣ÿ¸öÐÂÈëÐеijÌÐòÔ±¶¼ÒªÃæÁÙÒ»¸öÁîÈËηËõµÄÌôÕ½£ºÒª½øÈëµÄÐÐÒµÊÇÒ»¸ö¾ßÓк£Á¿ÖªÊ¶µÄÐÐÒµ¡£ÒªÁ˽âµÄ¶«Î÷¼òֱ̫¶àÁË¡£¶ÔÓÚÓоÑéµÄÀÏÊÖÀ´Ëµ£¬Çé¿öÖ»ÓÐЩ΢ºÃת¡£ÖªÊ¶Á¿×ÜÔÚÔö´ó£¬½ö½ö¸úÉϽø¶È¾ÍÊÇÒ»¸öÌôÕ½¡£Èç¹ûÓÐÒ»·ÝרҵÈËÊ¿±Ø±¸µÄÊé¼®ºÍÍøÕ¾Áбí¸ÃÓжàºÃ!±¾Îľ ......
1£©DOM£¨JAXP Crimson½âÎöÆ÷£©
DOMÊÇÓÃÓëÆ½Ì¨ºÍÓïÑÔÎ޹صķ½Ê½±íʾXMLÎĵµµÄ¹Ù·½W3C±ê×¼¡£DOMÊÇÒÔ²ã´Î½á¹¹×éÖ¯µÄ½Úµã»òÐÅϢƬ¶ÏµÄ¼¯ºÏ¡£Õâ¸ö²ã´Î½á¹¹ÔÊÐí¿ª·¢ÈËÔ±ÔÚÊ÷ÖÐѰÕÒÌØ¶¨ÐÅÏ¢¡£·ÖÎö¸Ã½á¹¹Í¨³£ÐèÒª¼ÓÔØÕû¸öÎĵµºÍ¹¹Ôì²ã´Î½á¹¹£¬È»ºó²ÅÄÜ×öÈκι¤×÷¡£ÓÉÓÚËüÊÇ»ùÓÚÐÅÏ¢²ã´ÎµÄ£¬Òò¶ ......