【fix sonar】 ExecutorRouteLRU.java文件

This commit is contained in:
tianwenbo
2023-03-10 15:54:38 +08:00
parent 8cecd25738
commit 81eee82359
@@ -19,15 +19,15 @@ import java.util.concurrent.ConcurrentMap;
*/
public class ExecutorRouteLRU extends ExecutorRouter {
private static ConcurrentMap<Integer, LinkedHashMap<String, String>> jobLRUMap = new ConcurrentHashMap<Integer, LinkedHashMap<String, String>>();
private static long CACHE_VALID_TIME = 0;
private static ConcurrentMap<Integer, LinkedHashMap<String, String>> jobLRUMap = new ConcurrentHashMap<>();
private long cacheValidTime = 0;
public String route(int jobId, List<String> addressList) {
// cache clear
if (System.currentTimeMillis() > CACHE_VALID_TIME) {
if (System.currentTimeMillis() > cacheValidTime) {
jobLRUMap.clear();
CACHE_VALID_TIME = System.currentTimeMillis() + 1000*60*60*24;
cacheValidTime = System.currentTimeMillis() + 1000*60*60*24;
}
// init lru
@@ -38,15 +38,16 @@ public class ExecutorRouteLRU extends ExecutorRouter {
* a、accessOrdertrue=访问顺序排序(get/put时排序);false=插入顺序排期;
* b、removeEldestEntry:新增元素时将会调用,返回true时会删除最老元素;可封装LinkedHashMap并重写该方法,比如定义最大容量,超出是返回true即可实现固定长度的LRU算法;
*/
lruItem = new LinkedHashMap<String, String>(16, 0.75f, true);
lruItem = new LinkedHashMap<>(16, 0.75f, true);
jobLRUMap.putIfAbsent(jobId, lruItem);
}
// put new
for (String address: addressList) {
if (!lruItem.containsKey(address)) {
/*if (!lruItem.containsKey(address)) {
lruItem.put(address, address);
}
}*/
lruItem.computeIfAbsent(address,key->address);
}
// remove old
List<String> delKeys = new ArrayList<>();
@@ -55,7 +56,7 @@ public class ExecutorRouteLRU extends ExecutorRouter {
delKeys.add(existKey);
}
}
if (delKeys.size() > 0) {
if (!delKeys.isEmpty()) {
for (String delKey: delKeys) {
lruItem.remove(delKey);
}
@@ -63,14 +64,13 @@ public class ExecutorRouteLRU extends ExecutorRouter {
// load
String eldestKey = lruItem.entrySet().iterator().next().getKey();
String eldestValue = lruItem.get(eldestKey);
return eldestValue;
return lruItem.get(eldestKey);
}
@Override
public ReturnT<String> route(TriggerParam triggerParam, List<String> addressList) {
String address = route(triggerParam.getJobId(), addressList);
return new ReturnT<String>(address);
return new ReturnT<>(address);
}
}