是否可以從InputStream對象創建非阻塞ReadableByteChannel?將InputStream包裝爲非阻塞ReadableByteChannel
Channel.newChannel(的inputStream) - 生產可能受阻InputStream.read調用
是否可以從InputStream對象創建非阻塞ReadableByteChannel?將InputStream包裝爲非阻塞ReadableByteChannel
Channel.newChannel(的inputStream) - 生產可能受阻InputStream.read調用
不,這是不可能的。看到Javadoc。
ReadableByteChannel readableChannel = Channels.newChannel(InputStream in)
http://docs.oracle.com/javase/7/docs/api/java/nio/channels/Channels.html
這不會幫助 - 它會產生阻塞通道。它阻塞了包裝輸入流的讀取方法 – 2014-10-07 07:36:55
您可以嘗試實現這樣的自己的信道被阻塞通道,使用'Inputstream.avalable()'來避免阻塞。但是,這種方法並不能保證返回正確的值,所以你必須檢查你使用的Inputstream實現。
你確定你需要非阻塞通道嗎?一般來說,它需要定期輪詢來檢查數據的到達。在數據到達時調用回調的異步通道更有意義。
但是也許有些庫存在? – 2014-10-07 07:59:02
不,這是不可能的,請參閱Javadoc。沒有圖書館可以使不可能的事情成爲可能 – EJP 2014-10-17 22:33:53
@downvoter不要欺騙自己。如果您認真相信,請張貼您自己的答案,如何發表評論,投票等。 – EJP 2017-11-08 07:28:00