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