W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
當(dāng)引導(dǎo)我們的應(yīng)用程序啟動(dòng)和運(yùn)行之后,我們也需要懂得如何關(guān)閉它。雖然您可以使用JVM來處理所有退出,但是這樣做并不能很干凈地釋放資源。如果要關(guān)閉一個(gè)Netty的應(yīng)用程序是挺簡單的,但是需要記住以下幾點(diǎn)。
主要是記住關(guān)閉 EventLoopGroup,將處理任何懸而未決的事件和任務(wù)并隨后釋放所有活動(dòng)線程。這只是一種叫EventLoopGroup.shutdownGracefully()。這個(gè)調(diào)用將返回一個(gè) Future 用來通知關(guān)閉完成。注意,shutdownGracefully()也是一個(gè)異步操作,所以你需要阻塞,直到它完成或注冊(cè)一個(gè)偵聽器直到返回的 Future 來通知完成。
清單9.9定義了“優(yōu)雅地關(guān)閉”
Listing 9.9 Graceful shutdown
EventLoopGroup group = new NioEventLoopGroup() //1
Bootstrap bootstrap = new Bootstrap(); //2
bootstrap.group(group)
.channel(NioSocketChannel.class);
...
...
Future<?> future = group.shutdownGracefully(); //3
// block until the group has shutdown
future.sync();
或者,您可以調(diào)用 Channel.close() 顯式地在所有活動(dòng)管道之前調(diào)用EventLoopGroup.shutdownGracefully()。但是在所有情況下,記得關(guān)閉EventLoopGroup 本身
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: