我正在阅读netty4.0的源代码。我发现很多地方都有下面的代码,如何全面理解?以下是AbstractChannel类的一部分。
if (eventLoop.inEventLoop()) {
register0(promise);
} else {
try {
eventLoop.execute(new Runnable() {
@Override
public void run() {
register0(promise);
}
});
} catch (Throwable t) {
logger.warn(
"Force-closing a channel whose registration task was not accepted by an event loop: {}",
AbstractChannel.this, t);
closeForcibly();
closeFuture.setClosed();
safeSetFailure(promise, t);
}
}
答案 0 :(得分:1)
基本上,如果当前的__init_subclass__
与Thread
相同,则它将直接调用代码。如果不是,则需要分配一个EventExecutor
并将其传递给执行。