據我所知,我們可以將所有SocketChannel註冊到服務器端的一個Selector中,但爲什麼?將這些SocketChannel添加到ArrayList中有什麼區別,然後我手動迭代這個List?Java中的Selector的優勢
0
A
回答
1
選擇器允許JVM實現與操作系統select/epoll/kqueue(或等效)機制高效地工作,方法是將工作推入適當的內核/驅動程序。這些功能的現代操作系統實現通常被認爲是O(1)。
也就是說,Java本身可以「休眠」,直到底層操作系統發出一個或多個通道的信號 - 這是通過選擇器在Java NIO中配置和報告的。
在與選擇器的循環中,選擇將「阻止」,直到存在頻道更改 - 因此與選擇器保持一致可以有效地找到相關頻道並處理它們。上述目標的一部分是保持「每事件」處理O(c),其中當處理n個通道時。
+0
嗨,是事件驅動的東西? – Alexis
+0
@亞歷克斯好吧,不錯。可以說Selector.select「等待事件」。 – user2864740
1
相關問題
- 1. Enum的Java優勢
- 2. 定義優勢的優勢
- 3. 優勢Activator.CreateInstance的
- 4. BTREE的優勢?
- 5. NoSQL的優勢
- 6. 優勢的ArrayList
- 7. directExecutor的優勢
- 8. JAVA NIO Selector中的查詢?
- 9. noSql優於newSql的優勢
- 10. MySQLi優於MySQL的優勢
- 11. SqlEntityConnection優於SqlDataConnection的優勢?
- 12. nodemailer中XOAUTH2的優勢
- 13. C#中的屬性優勢
- 14. keras中fit_generator()的優勢
- 15. GAE NDB中BooleanProperty的優勢
- 16. java bean比Java Spring中的POJO有什麼優勢?
- 17. nuSOAP WebService的優勢?
- 18. 優勢VS ReSharper的
- 19. Spring Boot的優勢
- 20. 優勢B樹+的
- 21. 優勢在Node.js的
- 22. setMaxConcurrentOperationCount = 1的優勢
- 23. Jquery Templates的優勢
- 24. Jikes RVM的優勢
- 25. 優勢
- 26. 優勢
- 27. 優勢
- 28. 優勢
- 29. 優勢
- 30. #selector在手勢識別在xcode9
對於非阻塞事件,使用選擇器和監視器通道更容易。 –