2626@ ThreadSafe
2727@ SdkProtectedApi
2828public 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