Feature/unsafe over reflections (#1082)

* Use Unsafe to replace Lock

* Start cleaning up everything that has to do with CleanableThreadLocal

* Make cancellation work

Co-authored-by: NotMyFault <mc.cache@web.de>
This commit is contained in:
Hannes Greule
2021-05-29 00:47:46 +02:00
committed by GitHub
parent 04610822a2
commit 53681ccc59
54 changed files with 92 additions and 6829 deletions

View File

@ -19,22 +19,25 @@
package com.sk89q.worldedit.session.request;
import com.boydti.fawe.object.collection.CleanableThreadLocal;
import com.sk89q.worldedit.EditSession;
import com.sk89q.worldedit.LocalSession;
import com.sk89q.worldedit.extension.platform.Actor;
import com.sk89q.worldedit.extent.Extent;
import com.sk89q.worldedit.world.World;
import java.util.List;
import javax.annotation.Nullable;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* Describes the current request using a {@link ThreadLocal}.
*/
public final class Request {
private static final CleanableThreadLocal<Request> threadLocal = new CleanableThreadLocal<>(Request::new);
private static final ThreadLocal<Request> threadLocal = ThreadLocal.withInitial(Request::new);
// TODO any better way to deal with this?
private static final Map<Thread, Request> requests = new ConcurrentHashMap<>();
@Nullable
private World world;
@ -49,10 +52,11 @@ public final class Request {
private boolean valid;
private Request() {
requests.put(Thread.currentThread(), this);
}
public static List<Request> getAll() {
return threadLocal.getAll();
public static Collection<Request> getAll() {
return requests.values();
}
/**
@ -154,6 +158,7 @@ public final class Request {
public static void reset() {
request().invalidate();
threadLocal.remove();
requests.remove(Thread.currentThread());
}
/**