ÀÖÓãµç¾º

½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

ÀÖ¹ÛËøÒ»¶¨¾ÍÊǺõÄÂð?

¸üÐÂʱ¼ä:2023Äê04ÔÂ06ÈÕ09ʱ59·Ö À´Ô´:ÀÖÓãµç¾º ä¯ÀÀ´ÎÊý:

ºÃ¿Ú±®ITÅàѵ

¡¡¡¡ÔÚJavaÖУ¬ÀÖ¹ÛËøÊÇÖ¸ÔÚ²¢·¢²Ù×÷ʱ£¬¼ÙÉèËùÓвÙ×÷¶¼ÄÜ˳ÀûÍê³É£¬²»¶ÔÊý¾Ý¼ÓËø£¬¶øÊÇÔÚ¸üÐÂʱ¼ì²éÊý¾Ý°æ±¾£¬Èç¹û°æ±¾Ò»Ö£¬Ôò¸üгɹ¦£¬·ñÔò˵Ã÷Êý¾ÝÒѾ­±»ÆäËûÏ̸߳üУ¬ÐèÒª»Ø¹ö»òÕßÖØÊÔ¡£

¡¡¡¡ÀÖ¹ÛËøÏà¶ÔÓÚ±¯¹ÛËø(Pessimistic Locking)¶øÑÔ£¬Ã»ÓÐËøµÄÁ£¶ÈС£¬¿ªÏúС£¬µ«ÊÇÐèҪעÒâµÄÊÇ£¬µ±²¢·¢¾ºÕù¼¤ÁÒʱ£¬ÀÖ¹ÛËøµÄÖØÊÔ´ÎÊý¿ÉÄÜ»á·Ç³£Æµ·±£¬Õâ»áÔö¼ÓϵͳµÄ¿ªÏú£¬Òò´ËÐèҪȨºâÑ¡ÔñÊʵ±µÄËø²ßÂÔ¡£

ÀÖ¹ÛËøÒ»¶¨¾ÍÊǺõÄÂð£¿

¡¡¡¡ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄJava´úÂëÑÝʾÀÖ¹ÛËøµÄʵÏÖ£º

public class OptimisticLockExample {
    private int counter;
    private int version;

    public void increment() {
        int expectedVersion = version;
        expectedVersion++;
        // ¼ÙÉèÖ´Ðйý³ÌÖÐûÓÐÆäËûÏß³ÌÐÞ¸ÄcounterºÍversionµÄÖµ
        // Èç¹ûÓÐÆäËûÏß³ÌÐÞ¸ÄÁËversionµÄÖµ£¬Ôò˵Ã÷Êý¾ÝÒѾ­±»¸üУ¬ÐèÒª»Ø¹ö»òÕßÖØÊÔ
        if (expectedVersion == version) {
            counter++;
            version = expectedVersion;
        } else {
            throw new IllegalStateException("Optimistic lock failed");
        }
    }

    public int getCounter() {
        return counter;
    }
}

¡¡¡¡ÔÚÕâ¸öÀý×ÓÖУ¬counter±íʾ¼ÆÊýÆ÷µÄÖµ£¬version±íʾÊý¾ÝµÄ°æ±¾ºÅ¡£ÔÚincrement·½·¨ÖУ¬ÏȽ«versionµÄÖµ¿½±´Ò»·Ý£¬²¢½«¿½±´µÄÖµ¼Ó1×÷ΪÆÚÍûÖµexpectedVersion£¬È»ºóÅжÏexpectedVersionÊÇ·ñÓëversionÏàµÈ£¬Èç¹ûÏàµÈ£¬ËµÃ÷Êý¾ÝûÓб»ÆäËûÏß³ÌÐ޸ģ¬¿ÉÒÔ¸üÐÂcounterºÍversionµÄÖµ£¬·ñÔò˵Ã÷Êý¾ÝÒѾ­±»ÆäËûÏ̸߳üУ¬Å׳öÒì³£¡£

¡¡¡¡ÐèҪעÒâµÄÊÇ£¬Õâ¸öÀý×ÓÖ»ÊÇÒ»¸ö¼òµ¥µÄÑÝʾ£¬Êµ¼ÊÓ¦ÓÃÖÐÐèÒª¿¼ÂDz¢·¢ÐԺͿɿ¿ÐÔµÈÎÊÌ⣬ÀýÈçÈçºÎ´¦ÀíÖØÊÔ´ÎÊý¹ý¶àµÄÇé¿ö£¬ÈçºÎ±£Ö¤°æ±¾ºÅµÄÕýÈ·ÐԵȡ£

0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿