java NIO的多路複用及reactor
阿新 • • 發佈:2019-02-16
評論
2267363
2011-12-09 18:55
wavefly
java nio中的非阻塞是指在接收使用者訊息的時候不需要一直等待,通過註冊感興趣的事件來來減少socket io的阻塞等待時間。其實selector.select() 也是一直堵塞,在伺服器端等待op_connect事件的發生,類似於serversocket.accept(). 只是會阻塞當前的執行緒,並不會造成“伺服器處在一個高負荷狀態中”。
只是個人的淺見,請指正,
回覆 引用 檢視
#2樓[樓主]
2011-12-11 18:04
eric_chen
說得對!
不過我這裡的描述也有不明確的地方。那就是所謂的“感興趣的事件”實際上應該是在連結已經獲取的情況下,從伺服器端看,怎樣進行接下去的請求處理:讀或者寫,如何去等待這個事件。以前需要多個執行緒處理併發,現在只需一個執行緒就可以了。這個執行緒類似一個監護執行緒,selector.select()就在它裡面執行,無論有多少個請求到來,select都可以馬上根據註冊的selectionkey定位到對應操作(常量的時間複雜度),而不必如以前那樣排隊處理,進而減少了伺服器的壓力。
回覆 引用 檢視
======================================================
在最後,我邀請大家參加新浪APP,就是新浪免費送大家的一個空間,支援PHP+MySql,免費二級域名,免費域名繫結 這個是我邀請的地址,您通過這個連結註冊即為我的好友,並獲贈雲豆500個,價值5元哦!短網址是http://t.cn/SXOiLh我建立的小站每天訪客已經達到2000+了,每天掛廣告賺50+元哦,呵呵,飯錢不愁了,\(^o^)/