2014-11-24 25 views
7

netty上的syncawait方法有什麼區別?既阻止當前線程?netty中`sync`和`await`的區別

謝謝

+0

我不知道什麼網狀的,但這裏是與谷歌的幫助下區別:['等待'](http://netty.io/4.0/api/io/netty/channel/ChannelFuture。 html#await()) - ['sync'](http://netty.io/4.0/api/io/netty/channel/ChannelFuture.html#sync())。 – Maroun 2014-11-24 08:47:13

+1

@MarounMaroun這可能是問題所在 - 這些文檔寫得很差,並且會導致大多數人問爲什麼同時存在和等待方法似乎做同樣的事情。 – nos 2014-11-24 08:53:48

+0

的確,我閱讀了這些文檔,但無法理解其中的差異。 – simao 2014-11-24 08:54:50

回答

8

我覺得我不同意,文檔寫得不好。它們存在,但你需要閱讀API。不過,如果你覺得有些文檔缺失,愛的Netty貢獻;-)

因此,對於你的問題:不同的是確實sync()將再次引發故障如果將來失敗,而await()不會(如果你需要異常,你要問它未來OBJET使用cause()方法

見API:

http://netty.io/4.1/api/io/netty/channel/ChannelFuture.html#sync()

+1

sync()的接口僅引發InterruptedException。它如何能夠重新拋出另一個異常,例如IOException異常? – Jochen 2016-02-04 10:45:36

+0

Only InterruptedException yes是允許的,但在其他情況下,這是將承載該異常的ChannelFuture。請參閱http://netty.io/4.1/api/io/netty/util/concurrent/Future.html#cause() – 2016-02-04 19:33:14

相關問題