TracingExecutor.java

net.minecraft.TracingExecutor

信息

  • 全限定名:net.minecraft.TracingExecutor
  • 类型:public record
  • 包:net.minecraft
  • 源码路径:src/main/java/net/minecraft/TracingExecutor.java
  • 起始行号:L9
  • 实现:Executor
  • 职责:

    TODO

字段/常量

内部类/嵌套类型

构造器

方法

下面的方法块按源码顺序生成。

public Executor forName(String name) @ L10

  • 方法名:forName
  • 源码定位:L10
  • 返回类型:Executor
  • 修饰符:public

参数:

  • name: String

说明:

TODO

public void execute(Runnable command) @ L32

  • 方法名:execute
  • 源码定位:L32
  • 返回类型:void
  • 修饰符:public

参数:

  • command: Runnable

说明:

TODO

public void shutdownAndAwait(long timeout, TimeUnit unit) @ L37

  • 方法名:shutdownAndAwait
  • 源码定位:L37
  • 返回类型:void
  • 修饰符:public

参数:

  • timeout: long
  • unit: TimeUnit

说明:

TODO

private static Runnable wrapUnnamed(Runnable command) @ L52

  • 方法名:wrapUnnamed
  • 源码定位:L52
  • 返回类型:Runnable
  • 修饰符:private static

参数:

  • command: Runnable

说明:

TODO

代码

public record TracingExecutor(ExecutorService service) implements Executor {
    public Executor forName(String name) {
        if (SharedConstants.IS_RUNNING_IN_IDE) {
            return command -> this.service.execute(() -> {
                Thread thread = Thread.currentThread();
                String oldName = thread.getName();
                thread.setName(name);
 
                try (Zone ignored = TracyClient.beginZone(name, SharedConstants.IS_RUNNING_IN_IDE)) {
                    command.run();
                } finally {
                    thread.setName(oldName);
                }
            });
        } else {
            return (Executor)(TracyClient.isAvailable() ? (Executor)command -> this.service.execute(() -> {
                try (Zone ignored = TracyClient.beginZone(name, SharedConstants.IS_RUNNING_IN_IDE)) {
                    command.run();
                }
            }) : this.service);
        }
    }
 
    @Override
    public void execute(Runnable command) {
        this.service.execute(wrapUnnamed(command));
    }
 
    public void shutdownAndAwait(long timeout, TimeUnit unit) {
        this.service.shutdown();
 
        boolean terminated;
        try {
            terminated = this.service.awaitTermination(timeout, unit);
        } catch (InterruptedException var6) {
            terminated = false;
        }
 
        if (!terminated) {
            this.service.shutdownNow();
        }
    }
 
    private static Runnable wrapUnnamed(Runnable command) {
        return !TracyClient.isAvailable() ? command : () -> {
            try (Zone ignored = TracyClient.beginZone("task", SharedConstants.IS_RUNNING_IN_IDE)) {
                command.run();
            }
        };
    }
}

引用的其他类