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);
         }
      }
   }
}