Skip to content

Commit 8590e25

Browse files
committed
fix: use expected size to initialize hash map instead of capacity
1 parent 39b857f commit 8590e25

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

ttl-core/src/main/java/com/alibaba/crr/composite/CompositeCrrTransmit.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import java.util.logging.Level;
1111
import java.util.logging.Logger;
1212

13+
import static com.alibaba.ttl3.internal.util.Utils.newHashMap;
14+
1315
/**
1416
* {@link CompositeCrrTransmit} transmit all {@link CrrTransmit}
1517
* registered by {@link #registerCrrTransmit(CrrTransmit)}.
@@ -41,7 +43,7 @@ public CompositeCrrTransmit(CompositeCrrTransmitCallback callback) {
4143
*/
4244
@NonNull
4345
public Capture capture() {
44-
final HashMap<CrrTransmit<Object, Object>, Object> crrTransmit2Value = new HashMap<>(registeredCrrTransmitSet.size());
46+
final HashMap<CrrTransmit<Object, Object>, Object> crrTransmit2Value = newHashMap(registeredCrrTransmitSet.size());
4547
for (CrrTransmit<Object, Object> crrTransmit : registeredCrrTransmitSet) {
4648
try {
4749
crrTransmit2Value.put(crrTransmit, crrTransmit.capture());
@@ -68,7 +70,7 @@ public Backup replay(@NonNull Capture captured) {
6870
final Object data = callback.beforeReplay();
6971

7072
final Snapshot capturedSnapshot = (Snapshot) captured;
71-
final HashMap<CrrTransmit<Object, Object>, Object> crrTransmit2Value = new HashMap<>(capturedSnapshot.crrTransmit2Value.size());
73+
final HashMap<CrrTransmit<Object, Object>, Object> crrTransmit2Value = newHashMap(capturedSnapshot.crrTransmit2Value.size());
7274
for (Map.Entry<CrrTransmit<Object, Object>, Object> entry : capturedSnapshot.crrTransmit2Value.entrySet()) {
7375
CrrTransmit<Object, Object> crrTransmit = entry.getKey();
7476
try {
@@ -105,7 +107,7 @@ public Backup replay(@NonNull Capture captured) {
105107
public Backup clear() {
106108
final Object data = callback.beforeReplay();
107109

108-
final HashMap<CrrTransmit<Object, Object>, Object> crrTransmit2Value = new HashMap<>(registeredCrrTransmitSet.size());
110+
final HashMap<CrrTransmit<Object, Object>, Object> crrTransmit2Value = newHashMap(registeredCrrTransmitSet.size());
109111
for (CrrTransmit<Object, Object> crrTransmit : registeredCrrTransmitSet) {
110112
try {
111113
crrTransmit2Value.put(crrTransmit, crrTransmit.clear());

ttl-core/src/main/java/com/alibaba/ttl3/TransmittableThreadLocal.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import java.util.WeakHashMap;
1313
import java.util.function.Supplier;
1414

15+
import static com.alibaba.ttl3.internal.util.Utils.newHashMap;
16+
1517
/**
1618
* {@link TransmittableThreadLocal}({@code TTL}) can transmit the value from the thread of submitting task
1719
* to the thread of executing task even using thread pooling components.
@@ -330,7 +332,7 @@ private static class TtlTransmittee implements Transmittee<HashMap<Transmittable
330332
@NonNull
331333
@Override
332334
public HashMap<TransmittableThreadLocal<Object>, Object> capture() {
333-
final HashMap<TransmittableThreadLocal<Object>, Object> ttl2Value = new HashMap<>(holder.get().size());
335+
final HashMap<TransmittableThreadLocal<Object>, Object> ttl2Value = newHashMap(holder.get().size());
334336
for (TransmittableThreadLocal<Object> threadLocal : holder.get().keySet()) {
335337
ttl2Value.put(threadLocal, threadLocal.getTransmitteeValue());
336338
}
@@ -340,7 +342,7 @@ public HashMap<TransmittableThreadLocal<Object>, Object> capture() {
340342
@NonNull
341343
@Override
342344
public HashMap<TransmittableThreadLocal<Object>, Object> replay(@NonNull HashMap<TransmittableThreadLocal<Object>, Object> captured) {
343-
final HashMap<TransmittableThreadLocal<Object>, Object> backup = new HashMap<>(holder.get().size());
345+
final HashMap<TransmittableThreadLocal<Object>, Object> backup = newHashMap(holder.get().size());
344346

345347
for (final Iterator<TransmittableThreadLocal<Object>> iterator = holder.get().keySet().iterator(); iterator.hasNext(); ) {
346348
TransmittableThreadLocal<Object> threadLocal = iterator.next();
@@ -365,7 +367,7 @@ public HashMap<TransmittableThreadLocal<Object>, Object> replay(@NonNull HashMap
365367
@NonNull
366368
@Override
367369
public HashMap<TransmittableThreadLocal<Object>, Object> clear() {
368-
return replay(new HashMap<>(0));
370+
return replay(newHashMap(0));
369371
}
370372

371373
@Override

ttl-core/src/main/java/com/alibaba/ttl3/transmitter/ThreadLocalTransmitRegistry.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import java.util.WeakHashMap;
1010
import java.util.logging.Logger;
1111

12+
import static com.alibaba.ttl3.internal.util.Utils.newHashMap;
13+
1214
/**
1315
* {@code ThreadLocalTransmitRegistry}, {@code ThreadLocal} transmit integration.
1416
* <p>
@@ -142,7 +144,7 @@ private static class ThreadLocalTransmittee implements Transmittee<HashMap<Threa
142144
@NonNull
143145
@Override
144146
public HashMap<ThreadLocal<Object>, Object> capture() {
145-
final HashMap<ThreadLocal<Object>, Object> threadLocal2Value = new HashMap<>(threadLocalHolder.size());
147+
final HashMap<ThreadLocal<Object>, Object> threadLocal2Value = newHashMap(threadLocalHolder.size());
146148
for (Map.Entry<ThreadLocal<Object>, TtlCopier<Object>> entry : threadLocalHolder.entrySet()) {
147149
final ThreadLocal<Object> threadLocal = entry.getKey();
148150
final TtlCopier<Object> copier = entry.getValue();
@@ -155,7 +157,7 @@ public HashMap<ThreadLocal<Object>, Object> capture() {
155157
@NonNull
156158
@Override
157159
public HashMap<ThreadLocal<Object>, Object> replay(@NonNull HashMap<ThreadLocal<Object>, Object> captured) {
158-
final HashMap<ThreadLocal<Object>, Object> backup = new HashMap<>(captured.size());
160+
final HashMap<ThreadLocal<Object>, Object> backup = newHashMap(captured.size());
159161

160162
for (Map.Entry<ThreadLocal<Object>, Object> entry : captured.entrySet()) {
161163
final ThreadLocal<Object> threadLocal = entry.getKey();
@@ -172,7 +174,7 @@ public HashMap<ThreadLocal<Object>, Object> replay(@NonNull HashMap<ThreadLocal<
172174
@NonNull
173175
@Override
174176
public HashMap<ThreadLocal<Object>, Object> clear() {
175-
final HashMap<ThreadLocal<Object>, Object> threadLocal2Value = new HashMap<>(threadLocalHolder.size());
177+
final HashMap<ThreadLocal<Object>, Object> threadLocal2Value = newHashMap(threadLocalHolder.size());
176178

177179
for (Map.Entry<ThreadLocal<Object>, TtlCopier<Object>> entry : threadLocalHolder.entrySet()) {
178180
final ThreadLocal<Object> threadLocal = entry.getKey();

0 commit comments

Comments
 (0)