我在寫java java NIO,AsynchronousSocketChannel。在「完成」,在默認情況下大多數程序員使用此代碼:asynchronousSocketChannel寫入和中斷程序的其他部分
while(asynchronousSocketChannel.read(buffer).get() != -1)
此代碼原因等待服務器的迴應,但我想自定義,並沒有等待服務器,我的意思是我想做一些其他的事情,然後檢查是否有寫或不喜歡以下:
while(true){
if(asynchronousSocketChannel.read(buffer).get() != -1){
//do something
}
else{
//do something else
}
我嘗試了一堆不同的算法,但它不起作用。有人有什麼想法嗎?
請出示您的證據,證明大多數程序員使用此代碼的說法。像這樣以完全同步的方式使用異步套接字是完全浪費時間。使用阻塞模式NIO或'java.net.Socket'會更簡單。 – EJP
「在同步I/O操作中,一個線程進入操作狀態並等待I/O請求完成(程序」卡住「等待進程結束,沒有出口)。在異步環境中,一個線程通過更多的內核幫助來執行I/O操作,實際上,它會立即將請求傳遞給內核並繼續處理另一個任務。「通過閱讀本文,我認爲異步可能是更好的選擇,我的系統將會變得很大。我不明白爲什麼我的情況在你看來被認爲是「完全同步的方式」? – APNezh