Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java线程会话的最佳实践_Java_Multithreading_Sockets_Server_Scalability - Fatal编程技术网

Java线程会话的最佳实践

Java线程会话的最佳实践,java,multithreading,sockets,server,scalability,Java,Multithreading,Sockets,Server,Scalability,你好@all on StackOverflow, 我目前正在开发一个服务器-客户机应用程序,它通过HTTPS进行通信,并执行一些任务,这些任务必须在服务器和客户机上的单独线程中运行 我对客户端的线程效率不是很满意 正常服务器任务如下所示: HTTPS服务器接收登录请求 为通信打开一个长轮询线程 服务器收到打开的指令 服务器打开一个客户端套接字和一个线程从中读取 服务器收到关闭套接字的消息 Clientsocket线程现在应该等待 -此外:只要longpolling线程没有从socketthrea

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

我对客户端的线程效率不是很满意

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

  • HTTPS服务器接收登录请求
  • 为通信打开一个长轮询线程
  • 服务器收到打开的指令
  • 服务器打开一个客户端套接字和一个线程从中读取
  • 服务器收到关闭套接字的消息
  • Clientsocket线程现在应该等待
  • -此外:只要longpolling线程没有从socketthread接收到任何数据,它就应该等待()

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

    LongpollingThreadUSERSocket

    我现在的问题是,获得某种分散的可伸缩性的最佳实践是什么? 编写内部有while循环的永久线程是否更好。 或者编写在线程池上运行并在一个I/O周期后死亡的任务更好吗

    在网上找不到好答案。 也许是因为太具体了

    提前谢谢
    Bladerox

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


    在客户端站点:您看过java.nio中的多播功能了吗?

    您无法通过HTTPS实现所描述的功能。它不是服务器端轮询协议。TCP服务器不打开客户端套接字。我建议你做更多的研究。我想我的概念还不清楚。客户端向服务器发送https请求,服务器保存这些请求,直到它拥有客户端的数据。它使reepsonse变暗了。它允许双向通信。服务器将客户端套接字打开到不同的服务器。总的来说,这将是一个隧道应用程序…所以请修正您的问题以达成一致。