javaÉú²úÕßÏû·ÑÕß
ÌâÄ¿£ºÇëÓöàÏß³ÌʵÏÖÒ»¸öÉú²úÕßÀàºÍÒ»¸öÏû·ÑÕßÀ࣬Éú²úÕßËæ»úÉú³É20¸ö×Ö·û£¬Ïû·ÑÕß½«×Ö·û´òÓ¡µ½¿ØÖÆÌ¨¡£
class SyncStack{ //ͬ²½¶ÑÕ»Àà
¡¡¡¡¡¡private int index = 0; //¶ÑÕ»Ö¸Õë³õʼֵΪ0
¡¡¡¡¡¡private char []buffer = new char[6]; //¶ÑÕ»ÓÐ6¸ö×Ö·ûµÄ¿Õ¼ä
¡¡¡¡¡¡public synchronized void push(char c){ //¼ÓÉÏ»¥³âËø
¡¡¡¡¡¡¡¡¡¡while(index = = buffer.length){ //¶ÑÕ»ÒÑÂú£¬²»ÄÜѹջ
¡¡¡¡¡¡¡¡¡¡try{
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡this.wait(); //µÈ´ý£¬Ö±µ½ÓÐÊý¾Ý³öÕ»
¡¡¡¡¡¡¡¡¡¡¡¡¡¡}catch(InterruptedException e){}
¡¡¡¡¡¡¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡this.notify(); //֪ͨÆäËüḬ̈߳ÑÊý¾Ý³öÕ»
¡¡¡¡¡¡buffer[index] = c; //Êý¾ÝÈëÕ»
¡¡¡¡¡¡index++; //Ö¸ÕëÏòÉÏÒÆ¶¯
¡¡¡¡¡¡}
¡¡¡¡¡¡public synchronized char pop(){ //¼ÓÉÏ»¥³âËø
¡¡¡¡¡¡¡¡¡¡¡¡¡¡while(index ==0){ //¶ÑÕ»ÎÞÊý¾Ý£¬²»ÄܳöÕ»
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡try{
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡this.wait(); //µÈ´ýÆäËüḬ̈߳ÑÊý¾ÝÈëÕ»
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡}catch(InterruptedException e){}
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡¡¡¡¡¡¡this.notify(); //֪ͨÆäËüÏß³ÌÈëÕ»
¡¡¡¡¡¡¡¡¡¡¡¡¡¡index- -; //Ö¸ÕëÏòÏÂÒÆ¶¯
¡¡¡¡¡¡¡¡¡¡¡¡¡¡return buffer[index]; //Êý¾Ý³öÕ»
¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡class Producer implements Runnable{ //Éú²úÕßÀà
¡¡¡¡¡¡¡¡¡¡¡¡¡¡SyncStack theStack;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//Éú²úÕßÀàÉú³ÉµÄ×Öĸ¶¼±£´æµ½Í¬²½¶ÑÕ»ÖÐ
¡¡¡¡¡¡¡¡¡¡¡¡¡¡public Producer(SyncStack s){
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡theStack = s;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡¡¡¡¡¡¡public void run(){
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡char c;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡for(int i=0; i<20; i++){
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡c =(char)(Math.random()*26+'A');
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡//Ëæ»ú²úÉú20¸ö×Ö·û
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡theStack.push(c); //°Ñ×Ö·ûÈëÕ»
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡System.out.println("Produced: "+c); //´òÓ¡×Ö·û
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡try{
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Thread.sleep((int)(Math.random()*1000));
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡/*ÿ²úÉúÒ»¸ö×Ö·ûÏ߳̾Í˯Ãß*/
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡}catch(InterruptedException e){}
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡¡¡¡¡}
¡¡¡¡¡¡
Ïà¹ØÎĵµ£º
Java NIO APIÏê½â
ÔÚJDK
1.4ÒÔǰ£¬JavaµÄIO²Ù×÷¼¯ÖÐÔÚjava.ioÕâ¸ö°üÖУ¬ÊÇ»ùÓÚÁ÷µÄ×èÈû£¨blocking£©API¡£¶ÔÓÚ´ó¶àÊýÓ¦ÓÃÀ´Ëµ£¬ÕâÑùµÄAPIʹÓúܷ½
±ã£¬È»¶ø£¬Ò»Ð©¶ÔÐÔÄÜÒªÇó½Ï¸ßµÄÓ¦Óã¬ÓÈÆäÊÇ·þÎñ¶ËÓ¦Óã¬ÍùÍùÐèÒªÒ»¸ö¸üΪÓÐЧµÄ·½Ê½À´´¦ÀíIO¡£´ÓJDK 1.4Æð£¬NIO
API×÷Ϊһ¸ö»ùÓÚ»º³åÇø£¬²¢ÄÜÌṩ·Ç×èÈû(non-blo ......
SCJP5ѧϰ±Ê¼Ç
Ò»¡¢¶¨ÒåÏß³Ì
1¡¢À©Õ¹java.lang.ThreadÀà¡£
´ËÀàÖÐÓиörun()·½·¨£¬Ó¦¸Ã×¢ÒâÆäÓ÷¨£º
public void run
()
Èç¹û¸ÃÏß³ÌÊÇʹÓöÀÁ¢µÄ Runnable
ÔËÐжÔÏó¹¹ÔìµÄ£¬Ôòµ÷Óøà Runnable
¶ÔÏóµÄ run
·½·¨£»·ñÔò£¬¸Ã·½·¨²»Ö´ÐÐÈκβÙ×÷²¢·µ»Ø¡£
Thread
µÄ×ÓÀàÓ¦ ......
ΪʲôʹÓÃvolatile±Èͬ²½´ú¼Û¸üµÍ?
ͬ²½µÄ´ú¼Û, Ö÷ÒªÓɯ䏲¸Ç·¶Î§¾ö¶¨, Èç¹û¿ÉÒÔ½µµÍͬ²½µÄ¸²¸Ç·¶Î§, Ôò¿ÉÒÔ´ó·ùÌáÉý³ÌÐòÐÔÄÜ.
¶øvolatileµÄ¸²¸Ç·¶Î§½ö½ö±äÁ¿¼¶±ðµÄ. Òò´ËËüµÄͬ²½´ú¼ÛºÜµÍ.
volatileÔÀíÊÇʲô?
volatileµÄÓïÒå, ÆäʵÊǸæËß´¦ÀíÆ÷, ²»Òª½«ÎÒ·ÅÈ빤×÷ÄÚ´æ, ÇëÖ±½ÓÔÚÖ÷´æ²Ù×÷ÎÒ.(¹¤×÷ÄÚ´æÏê¼ûj ......
¡¡¡¡inkfishÔ´´£¬ÇëÎðÉÌÒµÐÔÖÊ×ªÔØ£¬×ªÔØÇë×¢Ã÷À´Ô´£¨http://blog.csdn.net/inkfish£©¡£
¡¡¡¡Ñ¹ËõÊDZà³ÌÖг£¼ûµÄ¼¼ÇÉ£¬¶àÓÃÓÚ´óÎļþѹËõ£¬Êý¾ÝÁ÷ѹËõµÈ¡£ÔÚJavaÀà¿âÖУ¬ÄÚÖÃÁËjar¡¢ZIP¡¢GZIP¡¢ZLIBµÈµÄÖ§³Ö£¨¼ûjava.util.zip¡¢java.util.jar°ü£©¡£ÁíÍâÔÚApacheÏîÄ¿ÏÂAntÖÐant.jarµÄorg.apache.tools.tar¡¢org.apache.tool ......
¡¡ ¡¡¡¡
¡¡¡¡Èí¼þ¿ª·¢Ö®Â·ÊdzäÂú¾£¼¬ÓëÌôս֮·,Ò²ÊdzäÂúÏ£Íû֮·¡£JAVAѧϰҲÊÇÈç´Ë£¬Ã»Óнݾ¶¿É×ß¡£ÃÎÏëÏñ¡¶ÌìÁú°Ë²¿¡·ÖÐÐéÖñÒ»Ñù±»ÎÞÑÂ×Óõ®õ¹à¶¥¶øÇáËÉ»ñµÃÒ»¼××Ó¹¦Á¦£¬ÊǺܲ»ÏÖʵµÄ¡£Ã¿ÌìÑöÌì´ó½Ð"ÌìÉñ°¡£¬Çë´Í¸øÎÒÒ»±¾¿û»¨±¦µä°É"£¬Êâ²»Öª¼´Ê¹Äã»ñµÃÁË¿û»¨±¦µä£¬³ýÁËÊÜ×Ô¹¬ÆäÉíÖ®¿àÍ⣬ÄãÒ²²»Ò»¶¨³ÉµÃÁË"¶«·½² ......