Skip to content

Commit e96c109

Browse files
committed
Adding a lazy loading of the hashmap
1 parent 89d297e commit e96c109

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

utils-lite/src/main/java/software/amazon/awssdk/utilslite/SdkInternalThreadLocal.java

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,32 +26,44 @@
2626
@ThreadSafe
2727
@SdkProtectedApi
2828
public final class SdkInternalThreadLocal {
29-
private static final ThreadLocal<Map<String, String>> STORAGE = ThreadLocal.withInitial(HashMap::new);
29+
private static final ThreadLocal<Map<String, String>> STORAGE = new ThreadLocal<>();
3030

3131
private SdkInternalThreadLocal() {
3232
}
3333

3434
public static void put(String key, String value) {
35+
Map<String, String> map = STORAGE.get();
36+
if (map == null) {
37+
map = new HashMap<>();
38+
STORAGE.set(map);
39+
}
40+
3541
if (value == null) {
36-
STORAGE.get().remove(key);
42+
map.remove(key);
3743
} else {
38-
STORAGE.get().put(key, value);
44+
map.put(key, value);
3945
}
4046
}
4147

4248
public static String get(String key) {
43-
return STORAGE.get().get(key);
49+
Map<String, String> map = STORAGE.get();
50+
return map != null ? map.get(key) : null;
4451
}
4552

4653
public static String remove(String key) {
47-
return STORAGE.get().remove(key);
54+
Map<String, String> map = STORAGE.get();
55+
return map != null ? map.remove(key) : null;
4856
}
4957

5058
public static void clear() {
51-
STORAGE.get().clear();
59+
Map<String, String> map = STORAGE.get();
60+
if (map != null) {
61+
map.clear();
62+
}
5263
}
5364

5465
public static boolean containsKey(String key) {
55-
return STORAGE.get().containsKey(key);
66+
Map<String, String> map = STORAGE.get();
67+
return map != null && map.containsKey(key);
5668
}
5769
}

0 commit comments

Comments
 (0)