【问题标题】:Java Threading best practise for Sessions会话的 Java 线程最佳实践
【发布时间】:2016-01-03 05:29:03
【问题描述】:

你好 @all 在 StackOverflow 上, 我目前正在开发一个服务器客户端应用程序,它通过 HTTPS 进行通信并执行一些任务,这些任务必须在服务器以及客户端上的单独线程中运行。

我不太关心客户端的线程效率。

正常的服务器任务如下所示:

  1. HTTPS 服务器收到登录请求。
  2. 打开一个长轮询线程进行通信。
  3. 服务器收到打开指令
  4. 服务器打开一个客户端套接字和一个从中读取的线程。
  5. 服务器收到关闭套接字的消息。
  6. Clientsocket 线程现在应该等待。

-另外:longpolling 线程应该 wait() 只要它没有从 socketthread 收到任何数据。

所以在大多数情况下,一个用户可以在服务器端拥有多个套接字,因此一个会话包括:

LongpollingThreadUSER套接字

我现在的问题是获得一些可扩展性的最佳实践是什么? 编写内部有一个while循环的永久线程是否更好。 还是编写在线程池上运行并在一个 I/O 周期后死掉的任务更好。

在网上找不到好的答案。 也许是具体的..

提前致谢 Bladerox

【问题讨论】:

  • 您无法通过 HTTPS 执行您所描述的操作。它不是服务器端轮询协议。 TCP 服务器不打开客户端套接字。我建议你做更多的研究。
  • 我认为我的概念不清楚。客户端将 https 请求发送到服务器,该服务器持有它们,直到它为客户端提供数据。它是 sed 的 reepsonse。这允许双向通信。服务器打开客户端套接字到不同的服务器。总而言之,它将是一个隧道应用程序......
  • 所以解决你的问题以同意。

标签: java multithreading sockets server scalability


【解决方案1】:

我认为您应该使用某种 servlet 引擎或应用程序服务器。你的很多问题都会在里面得到解决。例如,使用异步 servlet 处理将有助于您的服务器组件。

在客户端:你看过 java.nio 中的多播内容吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-23
    • 2010-10-14
    • 2014-11-24
    • 1970-01-01
    • 2019-07-09
    相关资源
    最近更新 更多