@Override
    protected EventLoop newChild(Executor executor, Object... args) throws Exception {
        final EventLoop eventLoop = new DefaultEventLoop(this, executor);
        eventLoop.submit(() -> CURRENT_EVENT_LOOP.set(eventLoop)).syncUninterruptibly();
        return eventLoop;
    }
A {@link MultithreadEventLoopGroup} that can be used as the JMH executor for benchmarks. This allows
benchmark code to be run from within a event loop thread, which can be useful when the code is specifically
optimized for running inside an event loop. Without this, it would be necessary to switch between threads in
the benchmark which adds significant noise to the benchmark.

<p>This class is essentially the same as {@link DefaultEventLoopGroup} except it stores
a reference to the {@link EventLoop} in a {@link FastThreadLocal} to allow benchmark code to reference it
using {@link EventLoopJmhExecutor#currentEventLoop()}.

<p>To run on the event loop, the benchmark must specify the JVM args as something like
<pre>{@code
  {@literal @}Fork(jvmArgsAppend = { EventLoopJmhExecutor.JVM_ARG_1, EventLoopJmhExecutor.JMH_ARG_2 })
}</pre>
benchmarks/jmh/src/jmh/java/com/linecorp/armeria/shared/EventLoopJmhExecutor.java