Home / Class/ ScheduledFutureTask Class — netty Architecture

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) {

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