Skip to content

Commit

Permalink
Fix DynamicFromMap object pool synchronization
Browse files Browse the repository at this point in the history
  • Loading branch information
haitaoli committed Mar 6, 2018
1 parent 19a4a7d commit 052d9fb
Showing 1 changed file with 9 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,18 @@

import javax.annotation.Nullable;

import android.support.v4.util.Pools;
import android.support.v4.util.Pools.SimplePool;

/**
* Implementation of Dynamic wrapping a ReadableMap.
*/
public class DynamicFromMap implements Dynamic {
private static final Pools.SimplePool<DynamicFromMap> sPool = new Pools.SimplePool<>(10);
private static final ThreadLocal<SimplePool<DynamicFromMap>> sPool = new ThreadLocal<SimplePool<DynamicFromMap>>() {
@Override
protected SimplePool<DynamicFromMap> initialValue() {
return new SimplePool<>(10);
}
};

private @Nullable ReadableMap mMap;
private @Nullable String mName;
Expand All @@ -24,7 +29,7 @@ public class DynamicFromMap implements Dynamic {
private DynamicFromMap() {}

public static DynamicFromMap create(ReadableMap map, String name) {
DynamicFromMap dynamic = sPool.acquire();
DynamicFromMap dynamic = sPool.get().acquire();
if (dynamic == null) {
dynamic = new DynamicFromMap();
}
Expand All @@ -37,7 +42,7 @@ public static DynamicFromMap create(ReadableMap map, String name) {
public void recycle() {
mMap = null;
mName = null;
sPool.release(this);
sPool.get().release(this);
}

@Override
Expand Down

0 comments on commit 052d9fb

Please sign in to comment.