diff --git a/jero-boot/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java b/jero-boot/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java index 2d540067..a01f5c8e 100644 --- a/jero-boot/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java +++ b/jero-boot/jero-cloud-module/jero-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java @@ -19,15 +19,15 @@ import java.util.concurrent.ConcurrentMap; */ public class ExecutorRouteLRU extends ExecutorRouter { - private static ConcurrentMap> jobLRUMap = new ConcurrentHashMap>(); - private static long CACHE_VALID_TIME = 0; + private static ConcurrentMap> jobLRUMap = new ConcurrentHashMap<>(); + private long cacheValidTime = 0; public String route(int jobId, List 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、accessOrder:true=访问顺序排序(get/put时排序);false=插入顺序排期; * b、removeEldestEntry:新增元素时将会调用,返回true时会删除最老元素;可封装LinkedHashMap并重写该方法,比如定义最大容量,超出是返回true即可实现固定长度的LRU算法; */ - lruItem = new LinkedHashMap(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 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 route(TriggerParam triggerParam, List addressList) { String address = route(triggerParam.getJobId(), addressList); - return new ReturnT(address); + return new ReturnT<>(address); } }