2017-03-06 48 views
0

我應該把業務邏輯放在netty4中?我應該在哪裏放置netty4的業務邏輯?在chanelRead0()或運行一個任務?

我應該只是把我的代碼放在@Override channelRead0()或運行一個任務嗎? 我知道這兩者會碰到相同的IO事件循環,但它們之間的區別是什麼?哪一個更好?

解決方案1:

@Override 
channelRead0(){ 
    business code; 
} 

解決方案2:

@Override 
channelRead0(){ 
    ctx.executor().submit(new task(){business code}); 
    //or ctx.channel().eventLoop().submit(new task(){business code}); 
} 
+0

如果您使用NioEventLoop,除非您進行一些自定義,否則該任務實際上會被提交到執行您的'channelRead0'方法的線程的任務隊列:) – coolcfan

回答

1

只要你不使用任何阻塞操作(從DB例如讀取)channelRead0是完全罰款。總的來說,由您決定。當您需要執行某些慢操作,異步操作或定時事件時,方法更可能出現在案例中。

相關問題