Home / Class/ ImmediateEventExecutor Class — netty Architecture

ImmediateEventExecutor Class — netty Architecture

Architecture documentation for the ImmediateEventExecutor class in ImmediateEventExecutor.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  e920a029_e6b0_2304_5fdf_97b074b8a950["ImmediateEventExecutor"]
  dc8ea9de_80b1_ca2d_d3b5_1c0f00ad8ce6["ImmediateEventExecutor.java"]
  e920a029_e6b0_2304_5fdf_97b074b8a950 -->|defined in| dc8ea9de_80b1_ca2d_d3b5_1c0f00ad8ce6
  a2ca39a0_e70d_f21d_09ed_bea3a3055d7b["ImmediateEventExecutor()"]
  e920a029_e6b0_2304_5fdf_97b074b8a950 -->|method| a2ca39a0_e70d_f21d_09ed_bea3a3055d7b
  09554e56_7dbb_3445_bc5a_1d804be06853["inEventLoop()"]
  e920a029_e6b0_2304_5fdf_97b074b8a950 -->|method| 09554e56_7dbb_3445_bc5a_1d804be06853
  329ada3b_514a_f875_7c27_4f1279cef2c0["shutdownGracefully()"]
  e920a029_e6b0_2304_5fdf_97b074b8a950 -->|method| 329ada3b_514a_f875_7c27_4f1279cef2c0
  ff7b8ce0_621e_0c95_cc5e_939923399398["terminationFuture()"]
  e920a029_e6b0_2304_5fdf_97b074b8a950 -->|method| ff7b8ce0_621e_0c95_cc5e_939923399398
  5510007f_8e57_c244_a218_bf8c28254edf["shutdown()"]
  e920a029_e6b0_2304_5fdf_97b074b8a950 -->|method| 5510007f_8e57_c244_a218_bf8c28254edf
  b8d3391e_7e31_e372_effc_9f4a443563b9["isShuttingDown()"]
  e920a029_e6b0_2304_5fdf_97b074b8a950 -->|method| b8d3391e_7e31_e372_effc_9f4a443563b9
  1733ebe2_df62_d39f_6386_b8609fa5d6ab["isShutdown()"]
  e920a029_e6b0_2304_5fdf_97b074b8a950 -->|method| 1733ebe2_df62_d39f_6386_b8609fa5d6ab
  6572cb20_c0c3_7383_edf0_7c66e1fbc248["isTerminated()"]
  e920a029_e6b0_2304_5fdf_97b074b8a950 -->|method| 6572cb20_c0c3_7383_edf0_7c66e1fbc248
  1a104fb4_04c5_0ded_6b98_7666b6390f3a["awaitTermination()"]
  e920a029_e6b0_2304_5fdf_97b074b8a950 -->|method| 1a104fb4_04c5_0ded_6b98_7666b6390f3a
  64b99185_12ad_70d8_77c2_6ad84bec4984["execute()"]
  e920a029_e6b0_2304_5fdf_97b074b8a950 -->|method| 64b99185_12ad_70d8_77c2_6ad84bec4984
  74f0921e_c6a7_db67_07d1_215b068f745d["newPromise()"]
  e920a029_e6b0_2304_5fdf_97b074b8a950 -->|method| 74f0921e_c6a7_db67_07d1_215b068f745d
  27b1c311_12a5_8cb6_3e6c_a0a5ad65b55d["newProgressivePromise()"]
  e920a029_e6b0_2304_5fdf_97b074b8a950 -->|method| 27b1c311_12a5_8cb6_3e6c_a0a5ad65b55d

Relationship Graph

Source Code

common/src/main/java/io/netty/util/concurrent/ImmediateEventExecutor.java lines 33–161

public final class ImmediateEventExecutor extends AbstractEventExecutor {
    private static final InternalLogger logger = InternalLoggerFactory.getInstance(ImmediateEventExecutor.class);
    public static final ImmediateEventExecutor INSTANCE = new ImmediateEventExecutor();
    /**
     * A Runnable will be queued if we are executing a Runnable. This is to prevent a {@link StackOverflowError}.
     */
    private static final FastThreadLocal<Queue<Runnable>> DELAYED_RUNNABLES = new FastThreadLocal<Queue<Runnable>>() {
        @Override
        protected Queue<Runnable> initialValue() throws Exception {
            return new ArrayDeque<Runnable>();
        }
    };
    /**
     * Set to {@code true} if we are executing a runnable.
     */
    private static final FastThreadLocal<Boolean> RUNNING = new FastThreadLocal<Boolean>() {
        @Override
        protected Boolean initialValue() throws Exception {
            return false;
        }
    };

    private final Future<?> terminationFuture = new FailedFuture<Object>(
            GlobalEventExecutor.INSTANCE, new UnsupportedOperationException());

    private ImmediateEventExecutor() { }

    @Override
    public boolean inEventLoop() {
        return true;
    }

    @Override
    public boolean inEventLoop(Thread thread) {
        return true;
    }

    @Override
    public Future<?> shutdownGracefully(long quietPeriod, long timeout, TimeUnit unit) {
        return terminationFuture();
    }

    @Override
    public Future<?> terminationFuture() {
        return terminationFuture;
    }

    @Override
    @Deprecated
    public void shutdown() { }

    @Override
    public boolean isShuttingDown() {
        return false;
    }

    @Override
    public boolean isShutdown() {
        return false;
    }

    @Override
    public boolean isTerminated() {
        return false;
    }

    @Override
    public boolean awaitTermination(long timeout, TimeUnit unit) {
        return false;
    }

    @Override
    public void execute(Runnable command) {
        ObjectUtil.checkNotNull(command, "command");
        if (!RUNNING.get()) {
            RUNNING.set(true);
            try {
                command.run();
            } catch (Throwable cause) {
                logger.info("Throwable caught while executing Runnable {}", command, cause);
            } finally {

Frequently Asked Questions

What is the ImmediateEventExecutor class?
ImmediateEventExecutor is a class in the netty codebase, defined in common/src/main/java/io/netty/util/concurrent/ImmediateEventExecutor.java.
Where is ImmediateEventExecutor defined?
ImmediateEventExecutor is defined in common/src/main/java/io/netty/util/concurrent/ImmediateEventExecutor.java at line 33.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free