Skip to the content.

Home / cs-notes / Architecture / Components / Netty / EventLoop / Hierarchy

@startuml

package java.util.concurrent {
    interface ScheduledExecutorService
    interface ExecutorService
    interface Executor

    ScheduledExecutorService -up-|> ExecutorService
    ExecutorService -up-|> Executor

    AbstractExecutorService .up.|> ExecutorService
}

package io.netty.util.concurrent {
    interface OrderedEventExecutor
    interface EventExecutor
    interface EventExecutorGroup

    OrderedEventExecutor -up-|> EventExecutor
    EventExecutor -up-|> EventExecutorGroup
    MultithreadEventExecutorGroup -up-|> AbstractEventExecutorGroup
    AbstractEventExecutorGroup .up.|> EventExecutorGroup
    EventExecutorGroup -up-|> ScheduledExecutorService
}

' SingleThread
package io.netty.util.concurrent {
    SingleThreadEventExecutor .up.|> OrderedEventExecutor
    SingleThreadEventExecutor -up-|> AbstractScheduledEventExecutor
    AbstractScheduledEventExecutor -up-|> AbstractEventExecutor
    AbstractEventExecutor -up-|> AbstractExecutorService
    AbstractEventExecutor .up.|> EventExecutor
}

package io.netty.channel {
    interface EventLoop
    interface EventLoopGroup

    EventLoop -up-|> EventLoopGroup
    EventLoop .up.|> OrderedEventExecutor
    EventLoopGroup -up-|> EventExecutorGroup

    MultithreadEventLoopGroup .up.|> EventLoopGroup
    MultithreadEventLoopGroup -up-|> MultithreadEventExecutorGroup

    SingleThreadEventLoop .up.|> EventLoop
    SingleThreadEventLoop -up-|> SingleThreadEventExecutor
}

package io.netty.channel.nio {
    NioEventLoopGroup -up-|> MultithreadEventLoopGroup
    NioEventLoop -up-|> SingleThreadEventLoop
}

@enduml