Home / Class/ AbstractScheduledEventExecutor Class — netty Architecture

AbstractScheduledEventExecutor Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  d3e4d355_bb72_2545_e37d_dc0891709c08["AbstractScheduledEventExecutor"]
  716a896f_1162_f06e_6cec_76a6be8090a9["AbstractScheduledEventExecutor.java"]
  d3e4d355_bb72_2545_e37d_dc0891709c08 -->|defined in| 716a896f_1162_f06e_6cec_76a6be8090a9
  27fba1a6_b910_5393_4c76_902d2c2b2865["AbstractScheduledEventExecutor()"]
  d3e4d355_bb72_2545_e37d_dc0891709c08 -->|method| 27fba1a6_b910_5393_4c76_902d2c2b2865
  e4262c41_7850_bb2e_a8b9_93b19efda99d["Ticker()"]
  d3e4d355_bb72_2545_e37d_dc0891709c08 -->|method| e4262c41_7850_bb2e_a8b9_93b19efda99d
  1bfb3315_93ae_ff94_32ad_7e00bc671264["getCurrentTimeNanos()"]
  d3e4d355_bb72_2545_e37d_dc0891709c08 -->|method| 1bfb3315_93ae_ff94_32ad_7e00bc671264
  da66bcd2_0906_1c3d_b617_0b25551bd10d["nanoTime()"]
  d3e4d355_bb72_2545_e37d_dc0891709c08 -->|method| da66bcd2_0906_1c3d_b617_0b25551bd10d
  a5822d7a_b2e5_95df_25f9_d9178433db4a["defaultCurrentTimeNanos()"]
  d3e4d355_bb72_2545_e37d_dc0891709c08 -->|method| a5822d7a_b2e5_95df_25f9_d9178433db4a
  4569537b_c8d5_7028_c052_a17f44b47fa4["deadlineNanos()"]
  d3e4d355_bb72_2545_e37d_dc0891709c08 -->|method| 4569537b_c8d5_7028_c052_a17f44b47fa4
  f86463d6_87a3_ed4f_1b7e_e4fcf972f1e3["deadlineToDelayNanos()"]
  d3e4d355_bb72_2545_e37d_dc0891709c08 -->|method| f86463d6_87a3_ed4f_1b7e_e4fcf972f1e3
  d5a72cae_aee3_6bf7_693a_412f20216cf6["delayNanos()"]
  d3e4d355_bb72_2545_e37d_dc0891709c08 -->|method| d5a72cae_aee3_6bf7_693a_412f20216cf6
  713163b5_1b41_2f07_9f6c_5db5bb43a16b["initialNanoTime()"]
  d3e4d355_bb72_2545_e37d_dc0891709c08 -->|method| 713163b5_1b41_2f07_9f6c_5db5bb43a16b
  a6e16e16_cde9_a55b_e23d_982b79d60537["scheduledTaskQueue()"]
  d3e4d355_bb72_2545_e37d_dc0891709c08 -->|method| a6e16e16_cde9_a55b_e23d_982b79d60537
  2075d1d4_2386_f723_0954_1e84bbb3d7d7["isNullOrEmpty()"]
  d3e4d355_bb72_2545_e37d_dc0891709c08 -->|method| 2075d1d4_2386_f723_0954_1e84bbb3d7d7
  50c6c602_f107_380e_a739_6de375e8c744["cancelScheduledTasks()"]
  d3e4d355_bb72_2545_e37d_dc0891709c08 -->|method| 50c6c602_f107_380e_a739_6de375e8c744
  5de254ce_2d34_da9f_1b1d_760d06a55b9e["Runnable()"]
  d3e4d355_bb72_2545_e37d_dc0891709c08 -->|method| 5de254ce_2d34_da9f_1b1d_760d06a55b9e

Relationship Graph

Source Code

common/src/main/java/io/netty/util/concurrent/AbstractScheduledEventExecutor.java lines 31–407

public abstract class AbstractScheduledEventExecutor extends AbstractEventExecutor {
    private static final Comparator<ScheduledFutureTask<?>> SCHEDULED_FUTURE_TASK_COMPARATOR =
            new Comparator<ScheduledFutureTask<?>>() {
                @Override
                public int compare(ScheduledFutureTask<?> o1, ScheduledFutureTask<?> o2) {
                    return o1.compareTo(o2);
                }
            };

    static final Runnable WAKEUP_TASK = new Runnable() {
       @Override
       public void run() { } // Do nothing
    };

    PriorityQueue<ScheduledFutureTask<?>> scheduledTaskQueue;

    long nextTaskId;

    protected AbstractScheduledEventExecutor() {
    }

    protected AbstractScheduledEventExecutor(EventExecutorGroup parent) {
        super(parent);
    }

    @Override
    public Ticker ticker() {
        return Ticker.systemTicker();
    }

    /**
     * Get the current time in nanoseconds by this executor's clock. This is not the same as {@link System#nanoTime()}
     * for two reasons:
     *
     * <ul>
     *     <li>We apply a fixed offset to the {@link System#nanoTime() nanoTime}</li>
     *     <li>Implementations (in particular EmbeddedEventLoop) may use their own time source so they can control time
     *     for testing purposes.</li>
     * </ul>
     *
     * @deprecated Please use (or override) {@link #ticker()} instead. This method delegates to {@link #ticker()}. Old
     * code may still call this method for compatibility.
     */
    @Deprecated
    protected long getCurrentTimeNanos() {
        return ticker().nanoTime();
    }

    /**
     * @deprecated Use the non-static {@link #ticker()} instead.
     */
    @Deprecated
    protected static long nanoTime() {
        return Ticker.systemTicker().nanoTime();
    }

    /**
     * @deprecated Use the non-static {@link #ticker()} instead.
     */
    @Deprecated
    static long defaultCurrentTimeNanos() {
        return Ticker.systemTicker().nanoTime();
    }

    static long deadlineNanos(long nanoTime, long delay) {
        long deadlineNanos = nanoTime + delay;
        // Guard against overflow
        return deadlineNanos < 0 ? Long.MAX_VALUE : deadlineNanos;
    }

    /**
     * Given an arbitrary deadline {@code deadlineNanos}, calculate the number of nano seconds from now
     * {@code deadlineNanos} would expire.
     * @param deadlineNanos An arbitrary deadline in nano seconds.
     * @return the number of nano seconds from now {@code deadlineNanos} would expire.
     * @deprecated Use {@link #ticker()} instead
     */
    @Deprecated
    protected static long deadlineToDelayNanos(long deadlineNanos) {
        return ScheduledFutureTask.deadlineToDelayNanos(defaultCurrentTimeNanos(), deadlineNanos);
    }

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free