ThreadUtil class
Пакет: com.hypixel.hytale.server.core.util.concurrent
Файл: com/hypixel/hytale/server/core/util/concurrent/ThreadUtil.java
Поля (8)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private final Consumer<Thread> |
action |
|
private final Predicate<Thread> |
predicate |
|
Thread |
var0 |
|
Thread |
var1 |
|
AtomicLong |
var1 |
|
Thread |
var2 |
|
Thread |
var2 |
|
Thread |
var3 |
Методы (6)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
ThreadWatcherpublic ThreadWatcher(Predicate<Thread> var1, Consumer<Thread> var2) |
|
public void |
checkAccesspublic void checkAccess(ThreadGroup var1) |
|
public void |
checkPermissionpublic void checkPermission(Permission var1) |
|
public void |
checkPermissionpublic void checkPermission(Permission var1, Object var2) |
static |
void |
createKeepAliveThreadvoid createKeepAliveThread(@Nonnull Semaphore var0) |
static |
void |
forceTimeHighResolutionvoid forceTimeHighResolution() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.util.concurrent;
class="kw">import java.security.Permission;
class="kw">import java.time.Duration;
class="kw">import java.util.concurrent.ExecutorService;
class="kw">import java.util.concurrent.Semaphore;
class="kw">import java.util.concurrent.SynchronousQueue;
class="kw">import java.util.concurrent.ThreadFactory;
class="kw">import java.util.concurrent.ThreadPoolExecutor;
class="kw">import java.util.concurrent.TimeUnit;
class="kw">import java.util.concurrent.atomic.AtomicLong;
class="kw">import java.util.function.Consumer;
class="kw">import java.util.function.Predicate;
class="kw">import javax.annotation.Nonnull;
class="kw">public class ThreadUtil {
class="kw">public ThreadUtil() {
}
class="kw">public class="kw">static void forceTimeHighResolution() {
Thread var0 = new Thread(() -> {
try {
while (!Thread.interrupted()) {
Thread.sleep(Duration.ofMillis(Long.MAX_VALUE));
}
} catch (InterruptedException var1) {
Thread.currentThread().interrupt();
}
}, "ForceTimeHighResolution");
var0.setDaemon(true);
var0.start();
}
class="kw">public class="kw">static void createKeepAliveThread(@Nonnull Semaphore var0) {
Thread var1 = new Thread(() -> {
try {
var0.acquire();
} catch (InterruptedException var2) {
Thread.currentThread().interrupt();
}
}, "KeepAlive");
var1.setDaemon(false);
var1.start();
}
@Nonnull
class="kw">public class="kw">static ExecutorService newCachedThreadPool(int var0, @Nonnull ThreadFactory var1) {
class="kw">return new ThreadPoolExecutor(0, var0, 60L, TimeUnit.SECONDS, new SynchronousQueue<>(), var1);
}
@Nonnull
class="kw">public class="kw">static ThreadFactory daemon(@Nonnull String var0) {
class="kw">return var1 -> {
Thread var2 = new Thread(var1, var0);
var2.setDaemon(true);
class="kw">return var2;
};
}
@Nonnull
class="kw">public class="kw">static ThreadFactory daemonCounted(@Nonnull String var0) {
AtomicLong var1 = new AtomicLong();
class="kw">return var2 -> {
Thread var3 = new Thread(var2, String.format(var0, var1.incrementAndGet()));
var3.setDaemon(true);
class="kw">return var3;
};
}
class="kw">static class ThreadWatcher class="kw">extends SecurityManager {
class="kw">private class="kw">final Predicate<Thread> predicate;
class="kw">private class="kw">final Consumer<Thread> action;
class="kw">public ThreadWatcher(Predicate<Thread> var1, Consumer<Thread> var2) {
this.predicate = var1;
this.action = var2;
}
@Override
class="kw">public void checkPermission(Permission var1) {
}
@Override
class="kw">public void checkPermission(Permission var1, Object var2) {
}
@Override
class="kw">public void checkAccess(ThreadGroup var1) {
Thread var2 = Thread.currentThread();
if (this.predicate.test(var2)) {
this.action.accept(var2);
}
}
}
}