Java并发包里的concurrentHashMap在什么情况下tryPresize方法里的sc会小于0?
在 Java 的 ConcurrentHashMap 类中,tryPresize 方法主要用于在预调整过程中判断是否需要调整 ConcurrentHashMap 的大小。
这个方法的参数 sc 是 ConcurrentHashMap 的 segment count(段数)。
在 tryPresize 方法中,while 循环的条件是 (sc > 1 && sc > ((sc >> 2) + 1))。这个条件的意思是,当 sc 大于 1 并且大于 (sc >> 2) + 1 时,循环继续。其中 >> 是逻辑右移操作,即将 sc 的二进制表示向右移动两位。
因此,tryPresize 方法只有在以下情况下才会执行 if (sc < 0) 的判断:
sc 的值大于 1,并且大于 (sc >> 2) + 1,使得 while 循环继续执行;
在循环中,通过尝试增加段数,使得 sc 的值小于 0。
这个条件基本上不会出现,因为 sc 是段数的计数,通常情况下都是非负的整数。因此,除非存在严重的并发问题或者程序错误,否则 sc < 0 的条件应该永远不会满足。
如果在实际运行中出现了这种情况,那么很可能是由于并发问题或者其他程序错误导致的。在这种情况下,程序可能会抛出异常或者进入不可预知的状态。因此,如果在实际的程序中遇到了这种情况,应该立即调查并修复可能的问题。
绛旓細杩欐槸榛樿寰楀埌鐨勯缂栬瘧,杩樺彲浠ラ氳繃璁剧疆: PreparedStatementstatement=connection.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY); 鏉ヨ缃父鏍囩殑鏂瑰紡,浠ヨ嚦浜庢父鏍囦笉鏄皢鏁版嵁鐩存帴cache鍒版湰鍦板唴瀛,鐒跺悗閫氳繃璁剧疆statement.setFetchSize(200);璁剧疆娓告爣姣忔閬嶅巻...
绛旓細鏄殑,杩欎釜闂鎴戜滑鍊煎緱鍘绘濊冧笅,閫氳繃API鍙戠幇鍙互瀵筍QL杩涜涓浜涙搷浣,渚嬪,閫氳繃:PreparedStatementstatement=connection.prepareStatement(sql),杩欐槸榛樿寰楀埌鐨勯缂栬瘧,杩樺彲浠ラ氳繃璁剧疆:PreparedStatementstatement=connection.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);鏉ヨ缃父鏍囩殑鏂瑰紡,浠ヨ嚦浜庢父...
绛旓細• 缁撴灉闆嗙殑骞跺彂鎬у叡鏈変袱绉,CONCUR_READ_ONLY鐨勭粨鏋滈泦鏄彧璇昏屼笉鍙洿鏂扮殑;鑰孋ONCUR_UPDATABLE鐨勭粨鏋滈泦鍒欐槸鍙互閫氳繃update鏂规硶杩涜鏇存柊鐨勩 • ResultSet鎺ュ彛鎻愪緵浜嗕竴缁剈pdate鏂规硶,鐢ㄤ簬鏇存柊缁撴灉闆涓殑鏁版嵁銆傝繖浜涙柟娉曚笌PreparedStatement鎺ュ彛涓畾涔夌殑setter鏂规硶涓鏍,涔熸槸涓庣被鍨嬬浉瀵瑰簲鐨勩傛墍鏈夌殑update鏂规硶閮戒互update寮澶 銆
绛旓細3銆Java web锛圝ava web鍩虹銆丣S銆丏OM鎿嶄綔銆丣SP/Servlet銆佺涓夋柟宸ュ叿鍖呫乀omcat...锛4銆佹鏋讹紙缃戠粶鍘熺悊銆丠TTP鍗忚銆丩inux鎿嶄綔绯荤粺銆佷簯鏈嶅姟鎼缓銆丼SM妗嗘灦搴旂敤銆丱racle搴旂敤銆丼pring JPA銆丠ibernate...锛5銆侀珮鍙敤銆侀珮骞跺彂銆侀珮鎵╁睍锛圫pringBoot銆佺紦瀛樸佸垎甯冨紡銆佹彃浠躲佸叏鏂囩储寮曘佹湇鍔′腑闂翠欢銆佹秷鎭腑闂翠欢銆佷簯鏈嶅姟...
绛旓細绗竴闃舵锛Java鍩虹鐭ヨ瘑锛歞os鍛戒护锛岄厤缃JAVA寮鍙戠幆澧冿紝鍩虹鐨勭紪绋嬭娉曠瓑 绗簩闃舵锛欽avaweb锛歐eb鍓嶇寮鍙戝熀纭鍜屾鏋躲丼ervlet鍜孞SP鍦╓eb鍚庣鐨勫簲鐢ㄣ乄eb鍚庣寮鍙戠浉鍏充笓棰樸丮VC鍜屽垎灞傛灦鏋勪互鍙婇」鐩紑鍙戞祦绋嬪強CASE宸ュ叿鐨勪娇鐢ㄨ繕鏈夊紑鍙戠殑鏍稿績妗嗘灦绛 绗笁闃舵锛氭鏋舵暣鍚堝紑鍙戯紙SSH/SSS锛夈丷ESTful鏋舵瀯鍜岀Щ鍔ㄧ鎺ュ彛璁捐...
绛旓細鏉ヨ缃父鏍囩殑鏂瑰紡,浠ヨ嚦浜庢父鏍囦笉鏄皢鏁版嵁鐩存帴cache鍒版湰鍦板唴瀛,鐒跺悗閫氳繃璁剧疆statement.setFetchSize(200);璁剧疆娓告爣姣忔閬嶅巻鐨勫ぇ灏;OK,杩欎釜鍏跺疄鎴戠敤杩,oracle鐢ㄤ簡鍜屾病鐢ㄦ病鍖哄埆,鍥犱负oracle鐨刯dbc API榛樿灏辨槸涓嶄細灏嗘暟鎹甤ache鍒java鐨鍐呭瓨涓殑,鑰宮ysql閲屽ご璁剧疆鏍规湰鏃犳晥,鎴戜笂闈㈣浜嗕竴鍫嗗簾璇,鍛靛懙,鎴戝彧鏄兂璇,java鎻愪緵鐨勬爣鍑...