目前,我有我们开发一个Java德州应用项目上的客户端。当然,这个应用程序基于一个客户端服务器套接字系统。我在ArrayList
中保存所有加入的客户端(我使用socketServer.accept()
方法获取它们)。目前,我为每个加入的客户端创建一个线程,永久检查客户端是否向服务器发送任何数据。我的同学告诉我,这将是更好的方式,如果我创建一个线程大,这在整个客户端ArrayList
迭代,并检查每一个客户端inputstreamreader
。我应该相信他吗?高性能多线程与插座
1
A
回答
1
创建每个插槽一个线程是不是一个好主意,如果你的应用程序将有很多客户。
我建议为寻找到外部库,以及如何他们处理connonections。例如:http://netty.io/,https://mina.apache.org/
+0
感谢您的回答。我会看看这些外部库。 –
1
两种方法都是不可行的。每个连接有一个线程将快速耗尽任何加载系统中的资源。让一个线程ping一个循环中的所有连接将会产生可怕的性能。我们可以使用select()变体 - 在Java中可用的所有套接字 - 具有合理的线程数(16个,为什么不),在这16个线程之间分配所有套接字并在这些套接字上多路复用为了这。
相关问题
- 1. mini210插座多线程
- 2. 如何提高插座读取性能?
- 3. Java的插座ObjectOutputStream的多线程
- 4. WPF多线程插座设计
- 5. Vert.x多线程网络插座
- 6. 线程,插座和流
- 7. 线程打开插座
- 8. 升压线程和插座
- 9. 插座和线程用C
- 10. 插座与插座集合
- 11. 使用多线程UDP服务器中的多个插座
- 12. iPhone插座 - 3克与无线
- 13. 多线程性能和性能测试
- 14. 蟒多个线程性能
- 15. 多线程:地图性能
- 16. 并行与线程 - 性能
- 17. 插座性能中的尖峰
- 18. 角io高图插座io
- 19. 如何插座的Android API /线程25
- 20. nanosleep不能与多线程
- 21. 多线程与功能NHibernate
- 22. 插座不能与netcat的庆典
- 23. 理解ZMQ - 对插座进行多线程
- 24. Python的插座 - 关闭线程,让更多用户
- 25. 如何接收和发送不同的线程与C插座
- 26. 多线程可以提高性能吗?怎么样?
- 27. 使用多线程/内核来提高awk性能
- 28. 如何提高多线程文件读取的性能?
- 29. 使用线程提高磁盘读取性能(多个文件)
- 30. 提高python多线程下载网页的性能
你不能让所有插座输入1个线程读取流。如果您使用的是阻塞插座,作为第一个读取调用将阻塞,直到该客户端作为发送的数据,这意味着你会从其他流读取阻塞线程。但是,您可以切换到非阻塞实现,然后处理单个线程上的所有读/写操作(即使您愿意,也可以在同一线程上接受连接)。看看[这个答案](http://stackoverflow.com/a/24617983/2398375) –
你的英语很好。回答你的问题,让我们从电影报价拉。你相信他吗?你的心告诉你什么?如果答案是肯定的,那就去做吧。如果没有,那么研究/做你的两个方法来建立你的信心,并证明你的情况。当怀疑信任代码时,不是人。至少在作为开发者的范围内 –
使用netty http://netty.io/ –