2025Äêjava¸ß²¢·¢µÄÈýÖÖʵÏÖ£¨2025Äêjava¸ß²¢·¢ÏîĿʵս£©
¸ß²¢·¢Ã»Ëø¿É²»ÐÐ,ÈýÖÖ·Ö²¼Ê½ËøÏê½â
1¡¢Èç¹ûµ±Ç°sqlÖ´Ðгɹ¦´ú±í¼ÓËø³É¹¦£¬Èç¹ûÅ׳öΨһË÷ÒýÒì³££¨DuplicatedKeyException£©Ôò´ú±í¼ÓËøÊ§°Ü£¬µ±Ç°ËøÒѾ±»ÆäËû¾ºÕùÕß»ñÈ¡¡£½âËøºÜ¼òµ¥£¬Ö±½Óɾ³ý´ËÌõ¼Ç¼¼´¿É¡£
2¡¢»ùÓÚÊý¾Ý¿â±í»ñÈ¡Ëø£ºÍ¨¹ý²åÈë¼Ç¼µÄ·½Ê½»ñÈ¡Ëø£¬ÊÍ·ÅËøÊ±É¾³ý¼Ç¼¡£ÕâÖÖ·½Ê½ÐèÒª½â¾ö¿ÉÖØÈë¡¢¶¨Ê±É¨Ãè¹ýÆÚʱ¼äµÈÎÊÌâ¡£»ùÓÚ»º´æ£¨RedisµÈ£©ÊµÏÖ·Ö²¼Ê½Ëø£¨AP£©¼ò»¯°æsetnxÃüÁʹÓÃjedis.setnx£¨lockKey£¬ val£©³¢ÊÔ»ñÈ¡Ëø£¬Èç¹û³É¹¦ÔòÉèÖó¬Ê±Ê±¼ä¡£µ«ÕâÖÖ·½Ê½¼ÓËøºÍÉèÖó¬Ê±Ê±¼ä²»ÊÇÔ×Ó²Ù×÷£¬´æÔÚÒþ»¼¡£
3¡¢·Ö²¼Ê½ËøÊǽâ¾ö¶à½Úµã²¢·¢¿ØÖƵĹؼü¹¤¾ß£¬ÒÔÏÂÊÇËÄÖÖÓÉdzÈëÉîµÄ·Ö²¼Ê½ËøÏê½â£º»ùÓÚÊý¾Ý¿âµÄ·Ö²¼Ê½Ëø ʵÏÖÔÀí£ºÀûÓÃÊý¾Ý¿âµÄËø»úÖÆ£¬ÈçMySQLµÄfor updateÓï¾ä£¬¶ÔÌØ¶¨¼Ç¼¼ÓËø£¬´Ó¶øÊµÏÖ¶Ô¹²Ïí×ÊÔ´µÄ»¥³â·ÃÎÊ¡£Ìص㣺ʵÏÖ¼òµ¥£¬µ«ÐÔÄÜÆ¿¾±Ã÷ÏÔ£¬ÓÈÆäÊÇÔڸ߲¢·¢³¡¾°Ï¡£
4¡¢ÊÍ·ÅËø£ºÔÚfinally¿éÖÐɾ³ýËø¼ü£¬È·±£ÎÞÂÛ²Ù×÷ÊÇ·ñ³É¹¦¶¼ÄÜÊÍ·ÅËø¡£È±µã£ºÔÚÖ÷´Ó½á¹¹ÖУ¬Èç¹û¿Í»§¶Ë´ÓÖ÷½Úµã»ñÈ¡Ëøºó£¬Ö÷½ÚµãÔÚͬ²½ËøÐÅÏ¢µ½´Ó½Úµãǰ崻ú£¬´Ó½Úµã½úÉýΪÖ÷½Úµãºó£¬ÆäËû¿Í»§¶Ë¿ÉÄÜ»ñÈ¡µ½Òѱ»ÆäËû¿Í»§¶Ë³ÖÓеÄËø£¬µ¼Ö°²È«Ê§Ð§¡£½â¾ö·½°¸£ºÊ¹ÓÃRedlockËã·¨µÈ»úÖÆÀ´Ìá¸ßRedis·Ö²¼Ê½ËøµÄ¿É¿¿ÐÔ¡£
5¡¢·Ö²¼Ê½ËøµÄÓ¦Óó¡¾° ·Ö²¼Ê½ËøÔÚ·Ö²¼Ê½ÏµÍ³ÖаçÑÝ×ÅÖÁ¹ØÖØÒªµÄ½ÇÉ«£¬ËüÖ÷ÒªÓÃÓÚ½â¾ö¶à¸ö½Úµãͬʱ·ÃÎʹ²Ïí×ÊԴʱµÄÊý¾ÝÒ»ÖÂÐÔºÍÍêÕûÐÔÎÊÌâ¡£ÒÔÏÂÊÇ·Ö²¼Ê½ËøµÄÖ÷ÒªÓ¦Óó¡¾°£º¸ß²¢·¢³¡¾°ÏµÄÊý¾ÝÒ»ÖÂÐÔ£ºÔڸ߲¢·¢µÄµçÉÌϵͳÖУ¬ÉÌÆ·¿â´æµÄ¿Û¼õÊÇÒ»¸öµäÐ͵ÄÓ¦Óó¡¾°¡£

java¸ß²¢·¢ÊÇʲôÒâ˼
ÔÚjavaÖУ¬¸ß²¢·¢ÊôÓÚÒ»ÖÖ±à³ÌÊõÓÒâ˼¾ÍÊÇÓкܶàÓû§ÔÚ·ÃÎÊ£¬µ¼ÖÂϵͳÊý¾Ý²»ÕýÈ·¡¢ôÜÊÂÊý¾ÝµÄÏÖÏó¡£²¢·¢¾ÍÊÇ¿ÉÒÔʹÓöà¸öÏ̻߳ò½ø³Ì£¬Í¬Ê±´¦Àí²»Í¬µÄ²Ù×÷¡£
¸ß²¢·¢JavaÊÇÖ¸Java±à³Ì»·¾³ÖÐϵͳÄܹ»Í¬Ê±´¦Àí´óÁ¿ÇëÇóµÄÄÜÁ¦¡£Ôڸ߲¢·¢³¡¾°Ï£¬ÏµÍ³ÐèÒª¿ìËÙÏìÓ¦Óû§ÇëÇó£¬Í¬Ê±±£³ÖÏìӦʱ¼äºÍϵͳ×ÊÔ´µÄºÏÀíʹÓá£ÒÔÏÂÊǸ߲¢·¢ÔÚJavaÖеö¹Ø¼üµã£ºỊ̈߳¨Thread£©£ºJavaͨ¹ýÏß³ÌÀ´Ö§³Ö²¢·¢´¦Àí¡£
Java¸ß²¢·¢ÊÇÖ¸Java³ÌÐòÔÚ´¦Àí´óÁ¿²¢·¢ÇëÇóʱ£¬Äܹ»±£³Ö¸ßÐÔÄܺÍÎȶ¨ÐÔ¡£¸ß²¢·¢½âÊÍÈçÏ£º¸ß²¢·¢ÊǼÆËã»úϵͳÔÚ´¦Àí¶à¸öÇëÇóʱµÄÒ»ÖÖ״̬¡£µ±´óÁ¿Óû§Í¬Ê±·ÃÎÊϵͳ£¬»òÕßϵͳÐèÒª´¦ÀíµÄÊý¾ÝÁ¿¼±¾çÔö¼Óʱ£¬¾Í»á²úÉú¸ß²¢·¢µÄÇé¿ö¡£
javaÔõôģÄâ¸ß²¢·¢
½â¾ö·½·¨ÓÐÈý£ºÊ¹Óûº´æ ʹÓÃÉú³É¾²Ì¬Ò³Ãæ html´¿¾²Ì¬Ò³ÃæÊÇЧÂÊ×î¸ß¡¢ÏûºÄ×îСµÄÒ³Ãæ¡£ÎÒÃÇ¿ÉÒÔʹÓÃÐÅÏ¢·¢²¼ÏµÍ³À´ÊµÏÖ¼òµ¥µÄÐÅϢ¼Èë×Ô¶¯Éú³É¾²Ì¬Ò³Ã棬ƵµÀ¹ÜÀí¡¢È¨ÏÞ¹ÜÀíºÍ×Ô¶¯×¥È¡µÈ¹¦ÄÜ£¬¶ÔÓÚÒ»¸ö´óÐÍÍøÕ¾À´Ëµ£¬ÓµÓÐÒ»Ì׸ßЧ¡¢¿É¹ÜÀíµÄÐÅÏ¢·¢²¼ÏµÍ³CMSÊDZز»¿ÉÉٵġ£
ʹÓÃCAS£¨Compare-And-Swap£©²Ù×÷ºÍÔ×ÓÀࣨÈçAtomicInteger¡¢AtomicLongµÈ£©À´ÊµÏÖÎÞËø²¢·¢¿ØÖÆ¡£CAS²Ù×÷ͨ¹ýÓ²¼þ¼¶±ðµÄÔ×ÓÖ¸ÁîÀ´±£Ö¤²Ù×÷µÄÔ×ÓÐԺͿɼûÐÔ£¬±ÜÃâÁËËøµÄʹÓúÍÐÔÄÜ¿ªÏú¡£²¢·¢ÈÝÆ÷£ºÊ¹ÓÃJavaÌṩµÄ²¢·¢ÈÝÆ÷£¨ÈçConcurrentHashMap¡¢CopyOnWriteArrayListµÈ£©À´Ìæ´ú´«Í³µÄͬ²½ÈÝÆ÷¡£
ÔÚÈí¼þ¼Ü¹¹²ãÃæ£¬¸ù¾Ý¾ßÌåÒµÎñÐèÇó£¬Ñ¡ÔñÊʺϵķֲ¼Ê½¼ÆËã·½°¸¡£Èç¹ûÃæ¶ÔµÄÊǼÆËãÃܼ¯ÐÍÈÎÎñ£¬ÓÅÏÈ¿¼ÂǸßÐÔÄܵÄCPUºÍ³ä×ãµÄÄڴ棻¶ø¶ÔÓÚIOÃܼ¯ÐÍÈÎÎñ£¬ÔòÐèÓÅ»¯´æ´¢É豸£¬¿¼ÂÇʹÓùÌ̬ӲÅÌÒÔÌá¸ßÊý¾Ý¶ÁдËÙ¶È¡£Í¬Ê±£¬¶ÔÓÚ²¢·¢´¦Àí£¬Java±à³ÌÖпÉÒÔͨ¹ý¶àÏ̼߳¼ÊõʵÏÖÈÎÎñ²¢Ðл¯¡£
ÄãÖ¸µÄ¸ß²¢·¢Á¿´ó¸ÅÓжàÉÙ£¿¼¸µãÐèҪעÒ⣺¾¡Á¿Ê¹Óûº´æ£¬°üÀ¨Óû§»º´æ£¬ÐÅÏ¢»º´æµÈ£¬¶à»¨µãÄÚ´æÀ´×ö»º´æ£¬¿ÉÒÔ´óÁ¿¼õÉÙÓëÊý¾Ý¿âµÄ½»»¥£¬Ìá¸ßÐÔÄÜ¡£ÓÃjprofilerµÈ¹¤¾ßÕÒ³öÐÔÄÜÆ¿¾±£¬¼õÉÙ¶îÍâµÄ¿ªÏú¡£ÓÅ»¯Êý¾Ý¿â²éѯÓï¾ä£¬¼õÉÙÖ±½ÓʹÓÃhibernateµÈ¹¤¾ßµÄÖ±½ÓÉú³ÉÓï¾ä£¨½öºÄʱ½Ï³¤µÄ²éѯ×öÓÅ»¯£©¡£
java¸ß²¢·¢ÊÇʲôÒâ˼,¸ß²¢·¢µÄ½âÊÍ
1¡¢Java¸ß²¢·¢ÊÇÖ¸Java³ÌÐòÔÚ´¦Àí´óÁ¿²¢·¢ÇëÇóʱ£¬Äܹ»±£³Ö¸ßÐÔÄܺÍÎȶ¨ÐÔ¡£¸ß²¢·¢½âÊÍÈçÏ£º¸ß²¢·¢ÊǼÆËã»úϵͳÔÚ´¦Àí¶à¸öÇëÇóʱµÄÒ»ÖÖ״̬¡£µ±´óÁ¿Óû§Í¬Ê±·ÃÎÊϵͳ£¬»òÕßϵͳÐèÒª´¦ÀíµÄÊý¾ÝÁ¿¼±¾çÔö¼Óʱ£¬¾Í»á²úÉú¸ß²¢·¢µÄÇé¿ö¡£
2¡¢¸ß²¢·¢JavaÊÇÖ¸Java±à³Ì»·¾³ÖÐϵͳÄܹ»Í¬Ê±´¦Àí´óÁ¿ÇëÇóµÄÄÜÁ¦¡£Ôڸ߲¢·¢³¡¾°Ï£¬ÏµÍ³ÐèÒª¿ìËÙÏìÓ¦Óû§ÇëÇó£¬Í¬Ê±±£³ÖÏìӦʱ¼äºÍϵͳ×ÊÔ´µÄºÏÀíʹÓá£ÒÔÏÂÊǸ߲¢·¢ÔÚJavaÖеö¹Ø¼üµã£ºỊ̈߳¨Thread£©£ºJavaͨ¹ýÏß³ÌÀ´Ö§³Ö²¢·¢´¦Àí¡£
3¡¢ÔÚjavaÖУ¬¸ß²¢·¢ÊôÓÚÒ»ÖÖ±à³ÌÊõÓÒâ˼¾ÍÊÇÓкܶàÓû§ÔÚ·ÃÎÊ£¬µ¼ÖÂϵͳÊý¾Ý²»ÕýÈ·¡¢ôÜÊÂÊý¾ÝµÄÏÖÏó¡£²¢·¢¾ÍÊÇ¿ÉÒÔʹÓöà¸öÏ̻߳ò½ø³Ì£¬Í¬Ê±´¦Àí²»Í¬µÄ²Ù×÷¡£
JavaÖÐ,QueueµÄ3ÖÖ·½Ê½ÊµÏÖ·½Ê½
1¡¢JavaÖеÄQueueÌṩÁËÈýÖÖʵÏÖ·½Ê½£º×èÈû¶ÓÁС¢·Ç×èÈû¶ÓÁкÍË«¶Ë¶ÓÁС£Ã¿ÖÖʵÏÖ·½Ê½¶¼ÓÐÆäÌØ¶¨µÄʹÓó¡¾°ºÍÓÅȱµã¡£×èÈû¶ÓÁÐÊÊÓÃÓÚÐèÒªÏß³Ìͬ²½ºÍÊý¾ÝÒ»ÖÂÐԵij¡¾°£»·Ç×èÈû¶ÓÁÐÊÊÓÃÓڸ߲¢·¢³¡¾°£¬ÒÔÈ·±£Ï̼߳äµÄÊý¾Ý½»»»ºÍ´¦ÀíµÄЧÂÊ£»Ë«¶Ë¶ÓÁÐÔòÌṩÁ˸ü¶àµÄ²Ù×÷·½·¨£¬¿ÉÒÔÔÚÍ·²¿ºÍβ²¿½øÐвåÈëºÍɾ³ý²Ù×÷¡£ÔÚÑ¡Ôñ¾ßÌåµÄQueueʵÏÖʱ£¬ÐèÒª¸ù¾Ýʵ¼ÊµÄÓ¦Óó¡¾°ºÍÐèÇó½øÐÐÑ¡Ôñ¡£
2¡¢Queue ½Ó¿ÚÊÇ Java ¼¯ºÏ¿ò¼ÜÖÐÓÃÓÚ±íʾ¶ÓÁÐÊý¾Ý½á¹¹µÄ½Ó¿Ú¡£ËüÌṩÁËһϵÁÐÓë¶ÓÁвÙ×÷Ïà¹ØµÄ·½·¨£¬°üÀ¨²åÈë¡¢ÒÆ³ýºÍ¼ì²é²Ù×÷¡£Queue ½Ó¿ÚµÄʵÏÖÀàÓжàÖÖ£¬ÆäÖÐ ArrayDeque ºÍ LinkedList Êdz£ÓõÄÁ½ÖÖ¡£ËüÃÇÔÚʵÏÖ·½Ê½ºÍÐÔÄÜÉÏÓÐËù²»Í¬£¬¸ù¾Ý¾ßÌåÐèÇóÑ¡ÔñºÏÊʵÄʵÏÖÀà¿ÉÒÔÌá¸ß³ÌÐòµÄÐÔÄÜ¡£
3¡¢ArrayBlockingQueueµ×²ãʵÏÖ£º»ùÓÚÊý×éʵÏÖ£¬²ÉÓÃÑ»·Êý×éµÄ·½Ê½ÌáÉýÁËÊý×éµÄ¿Õ¼äÀûÓÃÂÊ¡£ÓнçÐÔ£º³õʼ»¯Ê±±ØÐëÖ¸¶¨¶ÓÁг¤¶È£¬ÊÇÓнçµÄ×èÈû¶ÓÁС£Ḭ̈߳²È«£ºÊ¹ÓÃReentrantLockÔÚ²Ù×÷ǰºó¼ÓËøÀ´±£Ö¤Ḭ̈߳²È«¡£ÊÊÓó¡¾°£ºÊÊÓÃÓÚÃ÷È·ÏÞÖÆ¶ÓÁдóСµÄ³¡¾°£¬·ÀÖ¹Éú²úËÙ¶È´óÓÚÏû·ÑËÙ¶ÈʱÔì³ÉÄÚ´æÒç³ö¡¢×ÊÔ´ºÄ¾¡¡£
4¡¢ÓÐÐò¡¢¿ÉÖØ¸´£ºQueueÖеÄÔªËØÊÇÓÐÐòµÄ£¬ÇÒÔÊÐí´æ´¢Öظ´µÄÔªËØ¡£Map ¼üÖµ¶Ô´æ´¢£ºMapʹÓüüÖµ¶Ô£¨key-value£©µÄ·½Ê½À´´æ´¢Êý¾Ý¡£KeyÎÞÐò¡¢²»¿ÉÖØ¸´£ºMapÖеÄKeyÊÇÎÞÐòµÄ£¬ÇÒ²»ÔÊÐíÖØ¸´¡£Èç¹û³¢ÊÔÌí¼ÓÖØ¸´µÄKey£¬Map»á¸²¸Ç¾ÉµÄÖµ¡£ValueÎÞÐò¡¢¿ÉÖØ¸´£ºMapÖеÄValueÊÇÎÞÐòµÄ£¬ÇÒÔÊÐíÖØ¸´¡£
ֻͨ¹ýjava´úÂë,±£Ö¤²¢·¢Á¿¹ýÍòµÄ·½·¨ÓÐÄÄЩ
1¡¢Ê×ÏÈ£¬È·±£ÓµÓиßÐÔÄܵķþÎñÆ÷Ó²¼þ£¬°üÀ¨×ã¹»µÄ´ø¿íºÍ¸ß¶ËµÄÍøÂçÉ豸¡£Æä´Î£¬ÍøÂç²ãÃæÉÏ£¬Ê¹ÓøºÔؾùºâ¼¼Êõ½øÐÐÁ÷Á¿·ÖÅ䣬ÕâÊǷdz£¹Ø¼üµÄÒ»»·¡£ÔÚÈí¼þ¼Ü¹¹²ãÃæ£¬¸ù¾Ý¾ßÌåÒµÎñÐèÇó£¬Ñ¡ÔñÊʺϵķֲ¼Ê½¼ÆËã·½°¸¡£
2¡¢Ê¹ÓÃCAS£¨Compare-And-Swap£©²Ù×÷ºÍÔ×ÓÀࣨÈçAtomicInteger¡¢AtomicLongµÈ£©À´ÊµÏÖÎÞËø²¢·¢¿ØÖÆ¡£CAS²Ù×÷ͨ¹ýÓ²¼þ¼¶±ðµÄÔ×ÓÖ¸ÁîÀ´±£Ö¤²Ù×÷µÄÔ×ÓÐԺͿɼûÐÔ£¬±ÜÃâÁËËøµÄʹÓúÍÐÔÄÜ¿ªÏú¡£²¢·¢ÈÝÆ÷£ºÊ¹ÓÃJavaÌṩµÄ²¢·¢ÈÝÆ÷£¨ÈçConcurrentHashMap¡¢CopyOnWriteArrayListµÈ£©À´Ìæ´ú´«Í³µÄͬ²½ÈÝÆ÷¡£
3¡¢´úÂë²ãÃæµÄÐÔÄÜÓÅ»¯ ÓÅÑŵĶÔÏó´´½¨£ºÔÚJavaÖУ¬¶ÔÏóµÄ´´½¨ºÍÏú»Ù¶¼»áÏûºÄ×ÊÔ´¡£Òò´Ë£¬Í¨¹ý¼õÉÙ²»±ØÒªµÄ¶ÔÏó´´½¨¡¢Ê¹ÓöÔÏó³ØµÈ¼¼Êõ£¬¿ÉÒÔÏÔÖøÌáÉýϵͳÐÔÄÜ¡£×¢Òâ¶ÔÏóµÄͨÓ÷½·¨£º±ÜÃâÔÚÑ»·Öд´½¨¶ÔÏ󣬾¡Á¿Ê¹Óþֲ¿±äÁ¿¶ø·ÇÈ«¾Ö±äÁ¿£¬ÒÔ¼õÉÙÄÚ´æÕ¼ÓúÍÀ¬»ø»ØÊյįµÂÊ¡£
4¡¢Í¼Æ¬·þÎñÆ÷·ÖÀë ͼƬÊÇ×îÏûºÄ×ÊÔ´µÄ£¬½©Í¼Æ¬ºÍÒ³Ãæ·ÖÀë¿ÉÒÔ½µµÍÌá¹©Ò³Ãæ·ÃÎÊÇëÇóµÄ·þÎñÆ÷ϵͳѹÁ¦£¬²¢ÇÒ¿ÉÒÔ±£Ö¤ÏµÍ³²»»áÒòΪͼƬÎÊÌâ¶ø±ÀÀ£¡£
5¡¢¸ß²¢·¢ÎÊÌâµÄ½â¾ö·½·¨¶àÖÖ¶àÑù£¬¿ÉÒÔ·ÖΪ¶à¸ö·½ÃæÀ´¿¼ÂÇ¡£Ê×ÏÈ£¬ÔÚ´úÂë²ãÃæ£¬ÎÒÃÇÐèҪȷ±£´úÂëµÄ¼ò½àÐԺ͸ßЧÐÔ£¬±ÜÃâ³öÏÖÈßÓà»ò²»±ØÒªµÄ´úÂ룬´Ó¶øÌá¸ß³ÌÐòµÄÖ´ÐÐЧÂÊ¡£Æä´Î£¬´Ó·þÎñÆ÷µÄ½Ç¶ÈÀ´¿´£¬µ¥Ì¨·þÎñÆ÷Äܹ»´¦ÀíµÄ²¢·¢Á¿ÊÇÓÐÏ޵ģ¬Òò´ËÎÒÃÇ¿ÉÒÔ²ÉÈ¡¶ą̀·þÎñÆ÷µÄ·½Ê½À´·Öµ£Ñ¹Á¦¡£