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);
for (int i = 0; i < 30; i++) {
//½«Ö¸¶¨ÔªËØÌí¼Óµ½´Ë¶ÓÁÐÖУ¬Èç¹ûûÓпÉÓÿռ䣬½«Ò»Ö±µÈ´ý£¨Èç¹ûÓбØÒª£©¡£
bqueue.put(i);
System.out.println("Ïò×èÈû¶ÓÁÐÖÐÌí¼ÓÁËÔªËØ:" + i);
}
System.out.println("³ÌÐòµ½´ËÔËÐнáÊø£¬¼´½«Í˳ö----");
}
}
Ïà¹ØÎĵµ£º
Java 1.5ÒÔÉ϶¼ÔÚÐéÄâ»úÀïÄÚ½¨Á˳ÌÐòÐÔÄܸú×ٵŦÄÜ£¬²¢ÌṩÁËJava Profiling API£¬¼ò³ÆJPA£¬Äã¿ÉÒÔËÑË÷'java
profiling'¡£JavaÒ²ÌṩÁ˼òµ¥µÄÐÔÄÜÐÔÄܸú×Ù¹¤¾ßJConsole£¬ÄÜÏÔʾÄڴ棬Ï̵߳ÈʹÓÃ×´¿ö¡£ÁíÍâÒ²ÊÇÓÉSunÌṩ£¬µ«²»°üº¬ÔÚjdk
ÀïµÄ¹¤¾ßvisualgc¿ÉÒÔͼÐη½Ê½ÏÔʾÀ¬»øÊÕ¼¯µÄÔËÐÐÇé¿ö£¬ÎªÐÔÄÜ·ÖÎöÌṩ֧³Ö¡£µÚÈý· ......
JavaỊ̈߳ºÏ̵߳Ľ»»¥
SCJP5ѧϰ±Ê¼Ç
Ï߳̽»»¥ÊDZȽϸ´ÔÓµÄÎÊÌ⣬SCJPÒªÇ󲻺ܻù´¡£º¸ø¶¨Ò»¸ö³¡¾°£¬±àд´úÂëÀ´Ç¡µ±Ê¹Óõȴý¡¢Í¨ÖªºÍ֪ͨËùÓÐÏ̡߳£
Ò»¡¢Ï߳̽»»¥µÄ»ù´¡ÖªÊ¶
SCJPËùÒªÇóµÄÏ߳̽»»¥ÖªÊ¶µãÐèÒª´Ójava.lang.ObjectµÄÀàµÄÈý¸ö·½·¨À´Ñ§Ï°£º
void notify()
......
JavaỊ̈߳ºÏ̵߳ĵ÷¶È-Èò½
Ï̵߳ÄÈò½º¬Òå¾ÍÊÇʹµ±Ç°ÔËÐÐ×ÅÏß³ÌÈóöCPU×ÊÔ´£¬µ«ÊÇÈ»¸øË²»ÖªµÀ£¬½ö½öÊÇÈóö£¬Ïß³Ì״̬»Øµ½¿ÉÔËÐÐ״̬¡£
Ï̵߳ÄÈò½Ê¹ÓÃThread.yield()·½·¨£¬yield() Ϊ¾²Ì¬·½·¨£¬¹¦ÄÜÊÇÔÝÍ£µ±Ç°ÕýÔÚÖ´ÐеÄÏ̶߳ÔÏ󣬲¢Ö´ÐÐÆäËûÏ̡߳£
/**
* JavaỊ̈߳ºÏ̵߳ĵ÷¶È-Èò½
*
......
JavaỊ̈߳ºÐÂÌØÕ÷-Ëø£¨ÉÏ£©
ÔÚJava5ÖУ¬×¨ÃÅÌṩÁËËø¶ÔÏó£¬ÀûÓÃËø¿ÉÒÔ·½±ãµÄʵÏÖ×ÊÔ´µÄ·âËø£¬ÓÃÀ´¿ØÖƶԾºÕù×ÊÔ´²¢·¢·ÃÎʵĿØÖÆ£¬ÕâЩÄÚÈÝÖ÷Òª¼¯ÖÐÔÚjava.util.concurrent.locks °üÏÂÃæ£¬ÀïÃæÓÐÈý¸öÖØÒªµÄ½Ó¿ÚCondition¡¢Lock¡¢ReadWriteLock¡£
Condition
Condition ½« Object ¼àÊÓÆ÷·½·¨£¨wait¡¢notify ......