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();
}
};
}
}引用的其他类
- 无