Skip to content
This repository was archived by the owner on Mar 15, 2024. It is now read-only.

Commit ba38423

Browse files
committed
replacement for ThreadLocal.withInitial()
1 parent ecf0d82 commit ba38423

File tree

4 files changed

+28
-11
lines changed

4 files changed

+28
-11
lines changed

src/main/java/com/badlogic/gdx/concurrent/AsyncTask.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ public int await(Consumer<V> consumeAfterCompletion) throws InterruptedException
102102
} catch (BrokenBarrierException e) {
103103
throw new InterruptedException(e.getMessage());
104104
} catch (ExecutionException e) {
105-
e.printStackTrace(System.err);
106105
throw new RuntimeException("Exception thrown during execution of asynchronous task!", e);
107106
}
108107
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.badlogic.gdx.concurrent;
2+
3+
import com.badlogic.gdx.function.Supplier;
4+
5+
/**
6+
* Substitute for {@link ThreadLocal#withInitial(Supplier)}
7+
*/
8+
public class ThreadLocalInstance<T> extends ThreadLocal<T> {
9+
10+
private final Supplier<? extends T> supplier;
11+
12+
public ThreadLocalInstance(Supplier<? extends T> supplier) {
13+
this.supplier = supplier;
14+
}
15+
16+
@Override
17+
protected T initialValue() {
18+
return supplier.get();
19+
}
20+
}

src/main/java/com/badlogic/gdx/json/JsonFloatSerializer.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.badlogic.gdx.json;
22

3+
import com.badlogic.gdx.concurrent.ThreadLocalInstance;
34
import com.badlogic.gdx.utils.GdxRuntimeException;
45
import com.badlogic.gdx.utils.StringBuilder;
56

@@ -8,7 +9,7 @@
89

910
/**
1011
* Utility functions to (optionally) store floats and doubles using a IEEE-754 bit masks.
11-
*
12+
* <p>
1213
* Reference: http://the-witness.net/news/2011/12/engine-tech-concurrent-world-editing/
1314
*/
1415
public class JsonFloatSerializer {
@@ -17,12 +18,8 @@ public class JsonFloatSerializer {
1718
private static final Pattern purePattern = Pattern.compile("^" + fpRegEx + "$");
1819
private static final Pattern ieeePattern = Pattern.compile("^0x([a-fA-F0-9]+)\\|" + fpRegEx + "$");
1920

20-
private static final ThreadLocal<StringBuilder> stringBuilder = new ThreadLocal<StringBuilder>() {
21-
@Override
22-
protected StringBuilder initialValue() {
23-
return new StringBuilder(32);
24-
}
25-
};
21+
private static final ThreadLocal<StringBuilder> stringBuilder =
22+
new ThreadLocalInstance<>(() -> new StringBuilder(32));
2623

2724
public static String encodeFloatBits(float value) {
2825

src/main/java/com/badlogic/gdx/lang/Box.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.badlogic.gdx.lang;
22

3+
import com.badlogic.gdx.concurrent.ThreadLocalInstance;
34
import com.badlogic.gdx.function.Consumer;
45

56
import java.lang.reflect.Array;
@@ -193,13 +194,13 @@ public void close() {
193194
}
194195

195196
private static final ThreadLocal<BorrowChecker<Boolean>> tlsBoolean =
196-
ThreadLocal.withInitial(() -> new BorrowChecker<>(Boolean.class));
197+
new ThreadLocalInstance<>(() -> new BorrowChecker<>(Boolean.class));
197198

198199
private static final ThreadLocal<BorrowChecker<Integer>> tlsInteger =
199-
ThreadLocal.withInitial(() -> new BorrowChecker<>(Integer.class));
200+
new ThreadLocalInstance<>(() -> new BorrowChecker<>(Integer.class));
200201

201202
private static final ThreadLocal<BorrowChecker<Float>> tlsFloat =
202-
ThreadLocal.withInitial(() -> new BorrowChecker<>(Float.class));
203+
new ThreadLocalInstance<>(() -> new BorrowChecker<>(Float.class));
203204

204205
public static Boolean borrowBoolean() {
205206
return tlsBoolean.get().borrow().reference();

0 commit comments

Comments
 (0)