加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

线程的Java开销.我应该使用套接字还是套接字通道?

发布时间:2020-12-15 08:49:02 所属栏目:Java 来源:网络整理
导读:我有两个设计用于即时消息程序,我正在用 Java编写 第一个想法使用2个单独的线程.第一个线程忽略了gui,并通过写入阻塞套接字发送即时消息数据.第二个线程使用另一个阻塞套接字来监视来自朋友的传入数据包.我不确定使用线程是否是解决此问题的最佳方法,但我发
我有两个设计用于即时消息程序,我正在用 Java编写

第一个想法使用2个单独的线程.第一个线程忽略了gui,并通过写入阻塞套接字发送即时消息数据.第二个线程使用另一个阻塞套接字来监视来自朋友的传入数据包.我不确定使用线程是否是解决此问题的最佳方法,但我发现它比使用非阻塞套接字通道更容易处理.

我的第二个设计是在一个线程中使用非阻塞套接字通道,偶尔会检查是否有传入或传出数据.这个设计的好处是我不必担心线程之间的资源共享,但我不确定它是否更有效.

老实说,我真正关心的是制作一个平稳有效的程序.您认为构建更高效,更容易的设计是什么?我只是在玩耍,所以我没有建立高效和强大的客户端/服务器程序的经验,而不是我的感官告诉我的.

解决方法

很久以前我制作了一个软件,它有一个带有TCP / IP:套接字的聊天模块.

在每个客户端的开头,它是2个线程:ReaderThread和WriterThread.这还不够,因为客户端断开连接.我也需要创建一个InactivityChecker线程,因为读者无法检测服务器端的断开连接,而只有当他有消息时才能检测到写入器. 3线程/客户端有点浪费资源,但它可以同时达到5000个客户端! – 会通过上下文切换吃你的处理器!还必须注意打开的最大端口号.

如果您出于技术原因“同时”允许超过65525/2个客户端,那么异步方式就是唯一的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读