我们发布啦
This commit is contained in:
90
crmeb/src/main/java/com/utils/ThreadLocalUtil.java
Normal file
90
crmeb/src/main/java/com/utils/ThreadLocalUtil.java
Normal file
@@ -0,0 +1,90 @@
|
||||
package com.utils;
|
||||
|
||||
/**
|
||||
* Created on 2019/9/7.
|
||||
*
|
||||
* @author MaXiaolong
|
||||
*/
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public final class ThreadLocalUtil {
|
||||
|
||||
private ThreadLocalUtil() {
|
||||
throw new IllegalStateException("Utility class");
|
||||
}
|
||||
|
||||
private static final ThreadLocal<Map<String, Object>> threadLocal = ThreadLocal.withInitial(() -> new HashMap(4));
|
||||
|
||||
public static Map<String, Object> getThreadLocal(){
|
||||
return threadLocal.get();
|
||||
}
|
||||
public static <T> T get(String key) {
|
||||
Map map = (Map)threadLocal.get();
|
||||
return (T)map.get(key);
|
||||
}
|
||||
|
||||
public static <T> T get(String key,T defaultValue) {
|
||||
Map map = (Map)threadLocal.get();
|
||||
return (T)map.get(key) == null ? defaultValue : (T)map.get(key);
|
||||
}
|
||||
|
||||
public static void set(String key, Object value) {
|
||||
Map map = (Map)threadLocal.get();
|
||||
map.put(key, value);
|
||||
}
|
||||
|
||||
public static void set(Map<String, Object> keyValueMap) {
|
||||
Map map = (Map)threadLocal.get();
|
||||
map.putAll(keyValueMap);
|
||||
}
|
||||
|
||||
public static void remove() {
|
||||
threadLocal.remove();
|
||||
}
|
||||
|
||||
public static <T> Map<String,T> fetchVarsByPrefix(String prefix) {
|
||||
Map<String,T> vars = new HashMap<>();
|
||||
if( prefix == null ){
|
||||
return vars;
|
||||
}
|
||||
Map map = (Map)threadLocal.get();
|
||||
Set<Map.Entry> set = map.entrySet();
|
||||
|
||||
for( Map.Entry entry : set ){
|
||||
Object key = entry.getKey();
|
||||
if( key instanceof String ){
|
||||
if( ((String) key).startsWith(prefix) ){
|
||||
vars.put((String)key,(T)entry.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
return vars;
|
||||
}
|
||||
|
||||
public static <T> T remove(String key) {
|
||||
Map map = (Map)threadLocal.get();
|
||||
return (T)map.remove(key);
|
||||
}
|
||||
|
||||
public static void clear(String prefix) {
|
||||
if( prefix == null ){
|
||||
return;
|
||||
}
|
||||
Map map = (Map)threadLocal.get();
|
||||
Set<Map.Entry> set = map.entrySet();
|
||||
List<String> removeKeys = new ArrayList<>();
|
||||
|
||||
for( Map.Entry entry : set ){
|
||||
Object key = entry.getKey();
|
||||
if( key instanceof String ){
|
||||
if( ((String) key).startsWith(prefix) ){
|
||||
removeKeys.add((String)key);
|
||||
}
|
||||
}
|
||||
}
|
||||
for( String key : removeKeys ){
|
||||
map.remove(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user