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);
}
Source
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