java²¢·¢±à³Ìʵ¼ù ±Ê¼Ç£¨1£©
Ḭ̈߳²È« ʲôÊÇḬ̈߳²È«(thread-safe)£¿ Ò»¸öÀ࣬Èç¹ûÄܹ»ÔÚ¶àÏ̲߳¢·¢·ÃÎʵĻ·¾³Ï£¨²»¹ÜÏ̷߳ÃÎʵÄ˳Ðò£©ÕýÈ·±íÏÖ×Ô¼ºµÄÐÐΪ£¬²¢ÇÒÎÞÐèÍⲿµ÷ÓÃÌí¼ÓÈκÎͬ²½Ö®ÀàµÄ²Ù×÷£¬Õâ¸öÀà¾ÍÊÇḬ̈߳²È«µÄ¡£
Õâ¸öÕýÈ·ÐÔ¿ÉÒÔÕâôÀí½â£¬¾ÍÊÇ˵¶àÏ̷߳ÃÎʵĽá¹û²»»á²»Í¬ÓÚµ¥Ï̵߳ķÃÎÊ¡£
Ḭ̈߳²È«µÄÀ಻ÐèÒªÍⲿµ÷ÓÃÌṩÈκθ½¼ÓµÄͬ²½¡£ ÎÞ״̬(stateless)µÄÀàÓÀÔ¶ÊÇḬ̈߳²È«µÄ¡£
ʲôÊÇÎÞ״̬µÄÀࣿûÓÐʵÀý±äÁ¿(field)£¬Ò²Ã»ÓÐÒýÓÃÆäËüÀàµÄfield¡£ Ô×ÓÐÔ A race condition occurs when the correctness of a computation depends on the relative timing or interleaving of multiple threads by the runtime; in other words, when getting the right answer relies on lucky timing. ×î³£¼ûµÄrace conditionÊÇcheck-and-act¡£Òª·ÀÖ¹ÕâÖÖrace condition£¬ÎÒÃÇÐèÒªÔ×ÓÐԵIJÙ×÷¡£Ê²Ã´ÊÇÔ×ÓÐÔÄØ£¬¾ÍÊÇ˵£¬ÄãÕâ¸ö²Ù×÷ÔÚÖ´ÐеĹý³ÌÖУ¬¶ÔÓÚÄã²Ù×÷µÄ״̬ÉÏÆäËüµÄ²Ù×÷£¨°üÀ¨Äã×Ô¼º£©ÒªÃ´È«¶¼Ö´ÐÐÍêÁË£¬ÒªÃ´»¹Ã»¿ªÊ¼¡£
Ïë˵¾äͨ˳µÄÖйú»°ÔõôÕâôÄѰ¡£¬»¹ÊǸø³öÔÎİɣº Operations A and B are atomic with respect to each other if, from the perspective of a thread executing A, when another thread executes B, either all of B has executed or none of it has. An atomic operation is one that is atomic with respect to all operations, including itself, that operate on the same state. À´¸öÀý×Ó @NotThreadSafe
public class UnsafeCountingFactorizer implements Servlet {
private long count = 0;
public long getCount() { return count; }
public void service(ServletRequest req, ServletResponse resp) {
BigInteger i = extractfromRequest(req);
BigInteger[] factors = factor(i);
++count;
encodeIntoResponse(resp, factors);
}
}
@ThreadSafe
public class CountingFactorizer implements Servlet {
private final AtomicLong count = new AtomicLong(0);
public long getCount() { return count.get(); }
public void service(ServletRequest req, ServletResponse resp) {
BigInteger i = extractfromRequest(req);
BigInteger[] factors = factor(i);
count.incrementAndGet();
Ïà¹ØÎĵµ£º
ÔÚ´«ÖǵÄÕâ¶Îʱ¼äÿÌìµÄÇéÐÎÏë¶¼ÏëµÃµ½£¬Á½µãÒ»Ïߣ¬µ«ÊÇÿÌì¶¼¸Ð¾õµ½ºÜ³äʵ£¬Ñ§Ï°£¬²»Í£µÄѧϰ¡£Ô½ÊDz»Í£µÄѧϰ£¬Ô½ÊǸоõ×Ô¼ºµÄÁ¦Á¿ÊÇÄÇôµÄ΢±¡£¬×Ô¼ºµÄÄÜÁ¦ÊÇÄÇôµÄС£¬JAVAÕæÊDz©´ó¾«Éî¡£ÀÏʦ˵½ÐÎÒÃDz»Òªµ£ÐÄ£¬¿ÉÊÇÎÒ²»µ£ÐÄÒ²²»¿ÉÄÜŶ£¬±Ï¾¹ÔÚͬÀàѧУ±ÏÒµµÄ£¬Ò²ÐíÎÒÃÇ¿ÉÒÔËãµÃÉÏÊǺܲ»´íµÄ£¬µ«ÊǺÍÎÒÃÇ̨ͬ¾º¼¼µÄÈË ......
0. ѧϰһÕÂÕÆÎÕÒ»ÕÅ£¬È»ºóÔÙ²»¶ÏµÄÓá£
1£® ÕÒһЩ±È½Ï¾µäµÄÀý×Ó£¬Ô´Âë(Ô´Âë°®ºÃÕß)£¬ ÿ¸öÀý×ӱȽϼ¯ÖÐÒ»ÖÖ±à³Ì˼Ïë¶øÉè¼ÆµÄ£¬±ÈÈçÔÚÎÒµÄʵ¼ùµ±ÖУ¬ÎÒÔø¾Ñ§Ï°¹ýÒ»¸öºÜ¾ µäµÄÀý×Ó¾ÍÊÇÓÃJavaʵÏÖµÄHotDraw£¨Ô´×ÔSmallTalk£©£¬Äã¿ÉÒÔÓÃrolemodel»òhotdrawÔÚ ËÑË÷ÒýÇæÉÏÕÒһϣ¬ÎҼDz»´óÇå ......
Èç¹ûÄãjavaÒѾÈëÃÅÁË£¬½¨ÒéÄãÏȲ»È¥Ïë´úÂë¡£¶øÊÇÈ¥ÏëÍê³ÉÈÎÎñÒª×öµÄ²½Öè¡£ÏëºÃÁ˺óÄÄÅÂÄãÈ¥Õ³Ìù´úÂë¶¼¿ÉÒÔ¡£±à³ÌÊÇ¿¼ÑéµÄ˼ά£¬²»ÊÇд´úÂëµÄËÙ¶È£¬ºÍ¶Ô´úÂëµÄ¼ÇÒäÐÔ¡£
±à³ÌÊÇÒ»¼þ¾Ñé»î, ²»ÊÇ¿´ÊéÄܽâ¾öµÄ, ±à³ÌÖÐÓöµ½µÄÎÊÌâÇ§Ææ°Ù¹Ö, ¸ù±¾²»ÊÇÒ»±¾Êé»òÕßn±¾ÄܸøÄã½â¾öµÄ£¬±ØÐë×Ô¼ºÇ××ÔÈ¥Ìå»á
ËùÒÔ, ÕÒ±¾ÓÐʵÀýµ ......
8. µ±ÏµÍ³´¦ÀíÍê³Éºó£¬±¨±í±»ÏÔʾ³öÀ´¡£ÕâÊÇÒ»·ÝÉÌÆ·ÏúÊÛ±¨¸æ£¬ÏÔʾµÄÊÇÿÀàÉÌÆ·µÄ¼¾¶ÈÏúÊÛ¶îÒÔ¼°ÀÛ¼ÆÇé¿ö¡£½ÓÏÂÀ´£¬ÎÒÃdz¢ÊÔÓà Java
´´½¨Ò»¸öʼþÏìÓ¦´¦ÀíÀ࣬°Ñÿ¼¾¶ÈÏúÊÛ¶îÔÚ10ÍòÃÀÔªÒÔÉϵÄÊý¾ÝÓúìÉ«±êʾ³öÀ´¡£
´´½¨ Java Àà
°´ÕÕÈçϲ½Ö裬Óà Java ´´½¨°ÙÁ鱨±í£¨BIRT£©µÄʼþÏìÓ¦´¦Àí³ÌÐò¡£
......
·µ»Ø¶à¸ö¶ÔÏó£º
PROCEDURE AUTO_SEL_INVOICE_DETAIL(
P_RESULT_LIST OUT SYS_REFCURSOR) AS
BEGIN
OPEN P_RESULT_LIST FOR
SELECT DISTINCT CC.CHARGE_COLLECTION_ID CHARGE_COLLECTION_ID, CC.COLLECT_DATE COLLECT_DATE, C ......