Use computeIfAbsent() replace putIfAbsent()

pull/1402/head
hailang.zhang 2 years ago
parent 8c8205b552
commit e9da158c9e

@ -276,9 +276,7 @@ public class ClientWorker implements DisposableBean {
if (cacheData != null) { if (cacheData != null) {
return cacheData; return cacheData;
} }
cacheData = new CacheData(namespace, itemId, threadPoolId); return cacheMap.computeIfAbsent(threadPoolId, k-> {
CacheData lastCacheData = cacheMap.putIfAbsent(threadPoolId, cacheData);
if (lastCacheData == null) {
String serverConfig; String serverConfig;
try { try {
serverConfig = getServerConfig(namespace, itemId, threadPoolId, defaultTimedOut); serverConfig = getServerConfig(namespace, itemId, threadPoolId, defaultTimedOut);
@ -287,9 +285,8 @@ public class ClientWorker implements DisposableBean {
} catch (Exception ex) { } catch (Exception ex) {
log.error("Cache Data Error. Service Unavailable: {}", ex.getMessage()); log.error("Cache Data Error. Service Unavailable: {}", ex.getMessage());
} }
lastCacheData = cacheData; return cacheData;
} });
return lastCacheData;
} }
private void setHealthServer(boolean isHealthServer) { private void setHealthServer(boolean isHealthServer) {

@ -64,11 +64,10 @@ public class BaseInstanceRegistry implements InstanceRegistry<InstanceInfo> {
public void register(InstanceInfo registrant) { public void register(InstanceInfo registrant) {
Map<String, Lease<InstanceInfo>> registerMap = registry.get(registrant.getAppName()); Map<String, Lease<InstanceInfo>> registerMap = registry.get(registrant.getAppName());
if (registerMap == null) { if (registerMap == null) {
ConcurrentHashMap<String, Lease<InstanceInfo>> registerNewMap = new ConcurrentHashMap<>(); registerMap = registry.computeIfAbsent(registrant.getAppName(), k -> {
registerMap = registry.putIfAbsent(registrant.getAppName(), registerNewMap); ConcurrentHashMap<String, Lease<InstanceInfo>> registerNewMap = new ConcurrentHashMap<>();
if (registerMap == null) { return registerNewMap;
registerMap = registerNewMap; });
}
} }
Lease<InstanceInfo> existingLease = registerMap.get(registrant.getInstanceId()); Lease<InstanceInfo> existingLease = registerMap.get(registrant.getInstanceId());
if (existingLease != null && (existingLease.getHolder() != null)) { if (existingLease != null && (existingLease.getHolder() != null)) {

Loading…
Cancel
Save