javaµÄ¶àÏß³Ìͬ²½»¥³â:synchronizedµÄÂÒÓÃ
ÔÚjavaµÄ¶àÏß³Ìͬ²½»¥³â´¦ÀíÖÐ,synchronizedÊDZ𲻿ÉÉٵĶ«Î÷.
µ«ÊÇÈç¹û²»ÇåÎúµÄ±à³ÌµÄ»°,Ò²¾ÍÊÇÂÒÓÃsynchronizedµÄ»°,ËÀËøµÄ·¢Éú¾ÍÊÇÀëÄãºÜ½üµÄ»°ÌâÁË.
ÔÚÇ°ÃæµÄÒ»¸öά»¤Öоͷ¢ÏÖÒ»¸öËÀËøµÄbug.¾¿ÆäÔÒòÊÇ¿ª·¢ÕßûÓÐÕæÕýÃ÷°×¶àÏ̵߳Äͬ²½»¥³â,ûÓÐÒâʶµ½ËÀËøµÄ·¢Éú,»òÕß˵×Ô¼ºÈÏΪдµÄ´úÂë²»»á·¢ÉúËÀËø.
ËÀËøµÄ·¢ÉúÒ»°ã²¢²»ÊǺÜÈÝÒ×ÔÙÏÖµÄ.Ò»µ©·¢ÉúÁ˵÷²é,È·È϶¼»á»¨·ÑºÜ¶àʱ¼ä.ÌرðÊǶԴóÐÍÍøÕ¾À´Ê±ÕâÖÖÏÖÏóµÄ·¢Éúʱ²»¿ÉÔÁµÄ.
»¥³â´¦ÀíÖÐËø·½·¨ºÍËø¿é. ¸Ð¾õÊÇÔÚËø¿éµÄ´¦ÀíÖÐÈÝÒ×ÂÒÓÃsynchronized.
ÔÚÄǸöά»¤µÄÖеĴúÂëÂß¼:
·½·¨AÖеÄÈçϵĴ¦Àí
×¼±¸´¦ÀíµÄ´úÂë1
synchronized (this) {
´¦Àí1
}
×¼±¸´¦ÀíµÄ´úÂë2
synchronized (this) {
´¦Àí2
}
ÆäËû´¦Àí
ÕâÑùÓÃÒ»¸ö·½·¨ÖаÑ×Ô¼ºÕâ¸ö¶ÔÏóËøÁËÁ½´Î.ËÀËøµÄ·¢Éú¾ÍÊÇÓпÉÄܵÄÁË.
ÔÚÉÏÃæµÄÄǸöÎÊÌâ´úÂëÖÐ,Èç¹ûÊÇËø×Ô¼ºµÄ»°,ÔÚÒ»¸ö·½·¨ÖоͲ»ÄܽøÐжà´ÎËø.
ÆäËûµÄ¶àÏ̻߳¹ÓкܶàºÜ¶àÐèÒªµÄ×¢ÒâµÄ,ÉÏÃæÖ»ÊǾÍÊÂÂÛʼòµ¥ËµÁËÒ»ÏÂÅöµ½µÄÎÊÌâ.
Ïà¹ØÎĵµ£º
ÏÈÀ´Á˽âÒ»ÏÂÁ´±íģʽµÄÔÀí£º
Ê×ÏÈдһ¸öJavaBean£¬ÄÚÈÝÊÇÒªÌí¼ÓµÄÔªËغ͸ÃÔªËصĽڵ㡣
public class NodeBean implements Serializable
{
private Object data; //ÔªËر¾Éí
private NodeBean next; //ÏÂÒ»¸ö½Úµã
&n ......
Ö÷Ïß³ÌÖУº
InitThread initThread=new InitThread(new Semaphore(0));//³õʼ»¯Ò»¸ö×ÓỊ̈߳¬´«Ò»¸ö³õֵΪ0µÄÐźÅÁ¿¸øËü
Display.getDefault().asyncExec(initThread);
try {//´Ë´¦»á¹ÒÆð£¬Ö±µ½×ÓÏß³ÌÍê³É¹¤×÷£¬ÐÞ¸ÄÁËÐźÅÁ¿µÄÖµ£¬Ö÷Ï̲߳Żá¼ÌÐø
initThread.getSemaphore().acquire();
} catch (Inte ......
½ñÌìÌý¿Î²ÅÖªµÀ×Ô¼º×ÔѧµÄhibernate¿ÉÒÔËãµÃÉÏÊÇһ̣ºýÍ¿£¬ÒòΪ֮ǰ¿´HibernateµÄÊé¿´ÁË¿´¼¸±é¶¼Ã»Óи㶮£¬½ñÌìÌýÁËÒ»ÌìµÄ¿Î£¬ºÜ¶à¶«Î÷¾Í»íÈ»¿ªÀÊ£¬ËùÒÔԤϰҲÊǺÜÖØÒªµÄ£¬ÄÇÅÂÊÇûÓп´¶®£¬µ«ÖÁÉÙÒ²ÓÐÓ¡Ïó¡£ ½ñÌìÉϿεĽø³Ì±È½Ï¿ì£¬ÐìÅà³ÉÀÏʦ½²¿Î£¬ÎÒÖ»ÄÜÓá°Ç¿º·¡±Á½¸ö×ÖÀ´ÐÎÈÝ£¬ÉÏ¿Îʱ¾«Á¦³äÅ棬ÓïËٿ죨µ«ÌýµÃºÜÇåÎú£¬¼ ......
// ÕûÊýµ½×Ö½ÚÊý×éת»»
public static byte[] int2bytes(int n) {
byte[] ab = new byte[4];
ab[0] = (byte) (0xff & n);
ab[1] = (byte) ((0xff00 & n) >> 8);
ab[2] = (byte) ((0xff0000 & n) >> 16);
ab[3] = (byte) ((0xff000000 & n) >> 24);
return ab ......