javaÖÐsynchronized¹Ø¼ü×ֵIJâÊÔ
×î½üÓÉÓÚ¸÷ÖÖÔÒòÆÈʹ×Ô¼ºÐèÒªÏêϸÁ˽âjavaµÄ»ù±¾ÖªÊ¶£¬Ö®Ç°ÔÚѧУѧjava¶àÏ̵߳Äʱºò£¬ºÜ¶àºÜÖØÒªµÄ֪ʶµã¶¼ÊÇÒ»´ø¶ø¹ý¡£
ÎÒÃÇÀ´»ØÒäÒ»ÏÂjavaÖÐsynchronized¹Ø¼ü×ÖµÄÓÃ;£¨Ò»ÏÂÄÚÈÝÊô¸öÈËÀí½â£¬»¶Ó¶ÁÕßÐÞÕý£¡£©£º
1£ºsynchronized ÐÞÊξ²Ì¬·½·¨Ê±ºò£¬ÔÚÈκÎʱºòjvm¶¼±£Ö¤Ö»ÓÐÒ»¸öÏ̷߳ÃÎÊ·½·¨ÄÚ²¿µÄ´úÂ룬Òò´Ë±£Ö¤ÁËÐí¶à¾²Ì¬µÄ¶ÔÏó²»±»ÒâÍâµÄÐ޸쬽â¾öÁ˶àÏß³ÌϾ²Ì¬¶ÔÏóµÄÊý¾Ý²»Í¬²½ÎÊÌâ¡£
¿´ÒÔϲâÊÔ´úÂ룺
package thread;
public class TestSynchronized extends Thread {
/**
* ²âÊÔÊä³öµÄ´ÎÊý
*/
private static int times;
/**
* ¶¨ÒåÈý¸öÏß³Ì
*/
private static Thread t1 = new TestSynchronized("t1");
private static Thread t2 = new TestSynchronized("t2");
private static Thread t3 = new TestSynchronized("t3");
/**
* ¿ªÊ¼²âÊÔʱ¼ä
*/
private static long start;
TestSynchronized(String name){
super(name);
}
/**
* @param args
*/
public static void main(String[] args) {
start = System.currentTimeMillis();
t1.start();
t2.start();
t3.start();
}
public void run(){
for(int i=0;i<50;i++){
log(getName(),i);
}
//´òÓ¡×»°·Ñʱ¼ä ÒÔ×îºó´òÓ¡µÄΪ±ê×¼
System.out.println(getName()+"ÒѾ½áÊø¡£»¨·Ñʱ¼ä£º"+(System.currentTimeMillis()-start));
}
synchronized static void log(Object id,Object msg){
times++;
msg(id," ½øÀ´ÁË¡£¡£");
msg(id,msg);
try {
Thread.sleep(100);
} catch (Exception e) {e.printStackTrace();}
msg(id," ³öÀ´ÁË¡£¡£");
}
static void msg(Object id,Object msg){
System.out.println(times+":"+id+">>"+msg);
}
}
ÆäÖÐÎÒÃÇÒ»“times” ΪҪÎÒÃÇҪͬ²½µÄÊý¾Ý£¬Ã¿´ÎlogµÄʱºòtimes½«±»×Ô¼ÓÒ»´Î£¬ÔÚÖ»ÓÐÒ»¸öÏ̷߳ÃÎʸ÷½·¨µÄÇé¿öÏ¿ÉÒÔºÜÕý³£µÄ´òÓ¡³ötimes¶ÔÓ¦µÄÊä³ö¡£µ«ÊÇÔÚ¶àÏ̵߳Ļ·¾³Ï¾ͻáºÜÈÝÒ׳öÏÖ´íλµÄÏÖÏó£¬ÒÔÉÏ´úÂëµÄ²¿·ÖÊä³ö£¨Èý¸öỊ̈߳©ÈçÏ£º
µÚ3´Îlog£¬Ị̈߳ºt2>>log start¡£¡£
µÚ3´Îlog£¬Ị̈߳ºt2>>0
µÚ3´Îlog£¬Ị̈߳ºt1>>log start¡£¡£
µÚ3´Îlog£¬Ị̈߳ºt1>>0
µÚ3´Îlog£¬Ị̈߳ºt3>&
Ïà¹ØÎĵµ£º
Èç¹ûÄã²»ÐèÒªÄÚ²¿Àà¶ÔÏóÓëÆäÍâΧÀà¶ÔÏóÖ®¼äÓÐÁªÏµ£¬ÄÇÄã¿ÉÒÔ½«ÄÚ²¿ÀàÉùÃ÷Ϊstatic¡£Õâͨ³£³ÆÎªÇ¶Ì×Àࣨnested class£©¡£ÏëÒªÀí½âstaticÓ¦ÓÃÓÚÄÚ²¿ÀàʱµÄº¬Ò壬Äã¾Í±ØÐë¼Çס£¬ÆÕͨµÄÄÚ²¿Àà¶ÔÏóÒþº¬µØ±£´æÁËÒ»¸öÒýÓã¬Ö¸Ïò´´½¨ËüµÄÍâΧÀà¶ÔÏó¡£È»¶ø£¬µ±ÄÚ²¿ÀàÊÇstaticµÄʱ£¬¾Í²»ÊÇÕâÑùÁË¡£Ç¶Ì×ÀàÒâζ×Å£º
1. Òª ......
ÌáÆðJavaÄÚ²¿ÀࣨInner Class£©¿ÉÄܺܶàÈ˲»Ì«ÊìϤ£¬Êµ¼ÊÉÏÀàËÆµÄ¸ÅÄîÔÚC++ÀïÒ²ÓУ¬ÄǾÍÊÇǶÌ×ÀࣨNested Class£©£¬¹ØÓÚÕâÁ½ÕßµÄÇø±ðÓëÁªÏµ£¬ÔÚÏÂÎÄÖлáÓжԱȡ£ÄÚ²¿Àà´Ó±íÃæÉÏ¿´£¬¾ÍÊÇÔÚÀàÖÐÓÖ¶¨ÒåÁËÒ»¸öÀࣨÏÂÎĻῴµ½£¬ÄÚ²¿Àà¿ÉÒÔÔÚºÜ¶àµØ·½¶¨Ò壩£¬¶øÊµ¼ÊÉϲ¢Ã»ÓÐÄÇô¼òµ¥£¬Õ§¿´ÉÏÈ¥ÄÚ²¿ÀàËÆºõÓÐЩ¶àÓ࣬ËüµÄÓô¦¶ÔÓÚ³õ ......
WindowsϵÄMemcache°²×°£º
1. ÏÂÔØmemcacheµÄwindowsÎȶ¨°æ£¬½âѹ·Åij¸öÅÌÏÂÃæ£¬±ÈÈçÔÚc:\memcached
2. ÔÚÖÕ¶Ë£¨Ò²¼´cmdÃüÁî½çÃæ£©ÏÂÊäÈë ‘c:\memcached\memcached.exe -d install’ °²×°
3. ÔÙÊäÈ룺 ‘c:\memcached\memcached.exe -d start’ Æô¶¯¡£NOTE: ÒÔºómemcached½«×÷ΪwindowsµÄÒ»¸ö· ......
1.ÄãÐèÒª¾«Í¨ÃæÏò¶ÔÏó·ÖÎöÓëÉè¼Æ(OOA/OOD)¡¢É漰ģʽ(GOF£¬J2EEDP)ÒÔ¼°×ÛºÏģʽ¡£ÄãÓ¦¸ÃÁ˽âUML£¬ÓÈÆäÊÇclass£¬object£¬interactionÒÔ¼°statediagrams¡£
2.ÄãÐèҪѧϰJavaÓïÑԵĻù´¡ÖªÊ¶ÒÔ¼°ËüµÄºËÐÄÀà¿â(collections£¬serialization£¬streams£¬networking£¬?multithreading£¬reflection£¬event£¬handling£¬NIO£¬localiza ......
±¾ÎÄΪԴ´£¬ÈçÐè×ªÔØ£¬Çë×¢Ã÷×÷Õߺͳö´¦£¬Ð»Ð»£¡
Ëõ·ÅͼÏñµÄ»ù±¾ÔÀíÊÇ´´½¨Ò»¸öÄ¿±ê´óСµÄ»²¼£¬È»ºó¶ÁȡԴͼÏñ£¬²¢½«¸ÃͼÏñ»æÖÆÕâ¸ö»²¼ÉÏ¡£ÎªÁËʹ³ÌÐòͨÓã¬Ô´Í¼ÏñºÍËõ·ÅºóµÄÄ¿±êͼÏñÓ¦Ó÷ֱðʹÓÃ
InputStreamºÍOutputStreamÀ´±íʾ£¬´úÂëÈçÏ£º
public
stat ......