ScheduledFutureTask Class — netty Architecture
Architecture documentation for the ScheduledFutureTask class in ScheduledFutureTask.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD a6be752b_e28c_a29a_8f7f_703050f9d384["ScheduledFutureTask"] dff7a99d_6e57_a816_8a17_197f1b9b2881["ScheduledFutureTask.java"] a6be752b_e28c_a29a_8f7f_703050f9d384 -->|defined in| dff7a99d_6e57_a816_8a17_197f1b9b2881 a4e3546b_6a84_175e_e8e7_1b0710d0da2d["ScheduledFutureTask()"] a6be752b_e28c_a29a_8f7f_703050f9d384 -->|method| a4e3546b_6a84_175e_e8e7_1b0710d0da2d e3cac81a_4aba_01eb_521c_4db6f18bc5da["validatePeriod()"] a6be752b_e28c_a29a_8f7f_703050f9d384 -->|method| e3cac81a_4aba_01eb_521c_4db6f18bc5da 872c0441_b3a9_e6f2_d49a_9c0d8a9b00eb["setId()"] a6be752b_e28c_a29a_8f7f_703050f9d384 -->|method| 872c0441_b3a9_e6f2_d49a_9c0d8a9b00eb d3100dd8_f9bc_7858_c1fa_ecd436e08b7a["getId()"] a6be752b_e28c_a29a_8f7f_703050f9d384 -->|method| d3100dd8_f9bc_7858_c1fa_ecd436e08b7a 6c9d2ed8_665f_92c8_996d_fe8c7f66521a["EventExecutor()"] a6be752b_e28c_a29a_8f7f_703050f9d384 -->|method| 6c9d2ed8_665f_92c8_996d_fe8c7f66521a aee3e3ad_cc00_bfec_f999_a0758db62654["deadlineNanos()"] a6be752b_e28c_a29a_8f7f_703050f9d384 -->|method| aee3e3ad_cc00_bfec_f999_a0758db62654 ee80ac29_08c6_ce8a_9e5b_122ba58c8586["setConsumed()"] a6be752b_e28c_a29a_8f7f_703050f9d384 -->|method| ee80ac29_08c6_ce8a_9e5b_122ba58c8586 768f890e_303c_d5b1_6670_58e2362d273e["delayNanos()"] a6be752b_e28c_a29a_8f7f_703050f9d384 -->|method| 768f890e_303c_d5b1_6670_58e2362d273e edbfbc62_d373_d07f_69a1_d9b86c89fd55["deadlineToDelayNanos()"] a6be752b_e28c_a29a_8f7f_703050f9d384 -->|method| edbfbc62_d373_d07f_69a1_d9b86c89fd55 605394fe_6dce_2a50_e80c_02d7b75d5989["getDelay()"] a6be752b_e28c_a29a_8f7f_703050f9d384 -->|method| 605394fe_6dce_2a50_e80c_02d7b75d5989 8e905954_fbd0_15e3_ec87_e25d81cfd841["compareTo()"] a6be752b_e28c_a29a_8f7f_703050f9d384 -->|method| 8e905954_fbd0_15e3_ec87_e25d81cfd841 991bb33b_0258_365f_421b_3989a36f1fcf["run()"] a6be752b_e28c_a29a_8f7f_703050f9d384 -->|method| 991bb33b_0258_365f_421b_3989a36f1fcf 62eb207e_bf1c_1aaf_a0e4_c90dca24822f["AbstractScheduledEventExecutor()"] a6be752b_e28c_a29a_8f7f_703050f9d384 -->|method| 62eb207e_bf1c_1aaf_a0e4_c90dca24822f
Relationship Graph
Source Code
common/src/main/java/io/netty/util/concurrent/ScheduledFutureTask.java lines 26–227
@SuppressWarnings("ComparableImplementedButEqualsNotOverridden")
final class ScheduledFutureTask<V> extends PromiseTask<V> implements ScheduledFuture<V>, PriorityQueueNode {
// set once when added to priority queue
private long id;
private long deadlineNanos;
/* 0 - no repeat, >0 - repeat at fixed rate, <0 - repeat with fixed delay */
private final long periodNanos;
private int queueIndex = INDEX_NOT_IN_QUEUE;
ScheduledFutureTask(AbstractScheduledEventExecutor executor,
Runnable runnable, long nanoTime) {
super(executor, runnable);
deadlineNanos = nanoTime;
periodNanos = 0;
}
ScheduledFutureTask(AbstractScheduledEventExecutor executor,
Runnable runnable, long nanoTime, long period) {
super(executor, runnable);
deadlineNanos = nanoTime;
periodNanos = validatePeriod(period);
}
ScheduledFutureTask(AbstractScheduledEventExecutor executor,
Callable<V> callable, long nanoTime, long period) {
super(executor, callable);
deadlineNanos = nanoTime;
periodNanos = validatePeriod(period);
}
ScheduledFutureTask(AbstractScheduledEventExecutor executor,
Callable<V> callable, long nanoTime) {
super(executor, callable);
deadlineNanos = nanoTime;
periodNanos = 0;
}
private static long validatePeriod(long period) {
if (period == 0) {
throw new IllegalArgumentException("period: 0 (expected: != 0)");
}
return period;
}
ScheduledFutureTask<V> setId(long id) {
if (this.id == 0L) {
this.id = id;
}
return this;
}
long getId() {
return id;
}
@Override
protected EventExecutor executor() {
return super.executor();
}
public long deadlineNanos() {
return deadlineNanos;
}
void setConsumed() {
// Optimization to avoid checking system clock again
// after deadline has passed and task has been dequeued
if (periodNanos == 0) {
assert scheduledExecutor().getCurrentTimeNanos() >= deadlineNanos;
deadlineNanos = 0L;
}
}
public long delayNanos() {
if (deadlineNanos == 0L) {
Source
Frequently Asked Questions
What is the ScheduledFutureTask class?
ScheduledFutureTask is a class in the netty codebase, defined in common/src/main/java/io/netty/util/concurrent/ScheduledFutureTask.java.
Where is ScheduledFutureTask defined?
ScheduledFutureTask is defined in common/src/main/java/io/netty/util/concurrent/ScheduledFutureTask.java at line 26.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free