【发布时间】:2015-10-06 16:43:51
【问题描述】:
目前我有一个项目,我们在其中开发 Java 德州扑克应用程序。当然,这个应用程序是基于客户端服务器套接字系统的。我将所有加入的客户(我使用socketServer.accept() 方法获取它们)保存在ArrayList 中。目前我为每个加入的客户端创建一个线程,它会永久检查客户端是否向服务器发送任何数据。我的同学告诉我,如果我创建一个大线程会更好,它遍历整个客户端ArrayList 并检查每个客户端inputstreamreader。我应该相信他吗?
【问题讨论】:
-
如果您使用阻塞的套接字,则不能有 1 个线程从所有套接字的输入流中读取,因为第一个读取调用将阻塞,直到该客户端作为发送数据,这意味着您将阻塞线程从其他流中读取。但是,您可以切换到非阻塞实现,然后在单个线程上处理所有读/写操作(如果您愿意,甚至可以接受同一线程上的连接)。查看this answer
-
你的英语很好。为了回答你的问题,让我们从电影语录中提取。你信任他吗?你的心告诉你什么?如果答案是肯定的,那就去做吧。如果没有,那么研究/做你和他的方法来建立你的信心并证明你的情况。当有疑问时信任代码,而不是人。至少在作为开发人员的范围内
-
使用nettynetty.io
-
感谢您的回答。我会看看netty.io
标签: java multithreading sockets serversocket