RunnableScheduledFutureTask Class — netty Architecture
Architecture documentation for the RunnableScheduledFutureTask class in UnorderedThreadPoolEventExecutor.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD dea38476_a354_8be5_00ad_9f3dbefd1156["RunnableScheduledFutureTask"] 4144915c_b885_a14e_a96d_7cc1d80f9535["UnorderedThreadPoolEventExecutor.java"] dea38476_a354_8be5_00ad_9f3dbefd1156 -->|defined in| 4144915c_b885_a14e_a96d_7cc1d80f9535 849b3e9d_780c_7417_8113_2e283802988e["RunnableScheduledFutureTask()"] dea38476_a354_8be5_00ad_9f3dbefd1156 -->|method| 849b3e9d_780c_7417_8113_2e283802988e ef7f6d36_e810_6a1c_9174_51591406c59e["V()"] dea38476_a354_8be5_00ad_9f3dbefd1156 -->|method| ef7f6d36_e810_6a1c_9174_51591406c59e c15f77ba_519c_349c_d05e_1d3c4e5488c2["run()"] dea38476_a354_8be5_00ad_9f3dbefd1156 -->|method| c15f77ba_519c_349c_d05e_1d3c4e5488c2 cab9a6bf_717f_a0ca_347a_4ffb654f9aa9["isPeriodic()"] dea38476_a354_8be5_00ad_9f3dbefd1156 -->|method| cab9a6bf_717f_a0ca_347a_4ffb654f9aa9 eb3d8a4c_574b_a2c8_4a7e_aec0467ef6a0["getDelay()"] dea38476_a354_8be5_00ad_9f3dbefd1156 -->|method| eb3d8a4c_574b_a2c8_4a7e_aec0467ef6a0 df803ffb_2dde_332e_a0f6_a059a7a7eaa3["compareTo()"] dea38476_a354_8be5_00ad_9f3dbefd1156 -->|method| df803ffb_2dde_332e_a0f6_a059a7a7eaa3
Relationship Graph
Source Code
common/src/main/java/io/netty/util/concurrent/UnorderedThreadPoolEventExecutor.java lines 224–284
private static final class RunnableScheduledFutureTask<V> extends PromiseTask<V>
implements RunnableScheduledFuture<V>, ScheduledFuture<V> {
private final RunnableScheduledFuture<V> future;
private final boolean wasCallable;
RunnableScheduledFutureTask(EventExecutor executor, RunnableScheduledFuture<V> future, boolean wasCallable) {
super(executor, future);
this.future = future;
this.wasCallable = wasCallable;
}
@Override
V runTask() throws Throwable {
V result = super.runTask();
if (result == null && wasCallable) {
// If this RunnableScheduledFutureTask wraps a RunnableScheduledFuture that wraps a Callable we need
// to ensure that we return the correct result by calling future.get().
//
// See https://github.com/netty/netty/issues/11072
assert future.isDone();
try {
return future.get();
} catch (ExecutionException e) {
// unwrap exception.
throw e.getCause();
}
}
return result;
}
@Override
public void run() {
if (!isPeriodic()) {
super.run();
} else if (!isDone()) {
try {
// Its a periodic task so we need to ignore the return value
runTask();
} catch (Throwable cause) {
if (!tryFailureInternal(cause)) {
logger.warn("Failure during execution of task", cause);
}
}
}
}
@Override
public boolean isPeriodic() {
return future.isPeriodic();
}
@Override
public long getDelay(TimeUnit unit) {
return future.getDelay(unit);
}
@Override
public int compareTo(Delayed o) {
return future.compareTo(o);
}
}
Source
Frequently Asked Questions
What is the RunnableScheduledFutureTask class?
RunnableScheduledFutureTask is a class in the netty codebase, defined in common/src/main/java/io/netty/util/concurrent/UnorderedThreadPoolEventExecutor.java.
Where is RunnableScheduledFutureTask defined?
RunnableScheduledFutureTask is defined in common/src/main/java/io/netty/util/concurrent/UnorderedThreadPoolEventExecutor.java at line 224.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free