Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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 - Fatal编程技术网

Java 多线程

Java 多线程,java,multithreading,Java,Multithreading,我正在做一个客户机-服务器应用程序,其中有多个客户机,它们由单个服务器控制。。。。 在这里,我捕获所有客户端的屏幕,我希望他们发送到ToWord服务器…所以它需要多线程。。。。 那么,有谁能告诉我如何在我的应用程序中使用多线程…?您可能希望签出线程池来处理输入连接: 阅读java.util.concurrent,尤其是Callable接口,它比早期java版本中的Runnable接口要好,因为它允许您从调用方法返回值(与运行方法相反)。线程池也很有用-它们由Executor类创建为Execut

我正在做一个客户机-服务器应用程序,其中有多个客户机,它们由单个服务器控制。。。。 在这里,我捕获所有客户端的屏幕,我希望他们发送到ToWord服务器…所以它需要多线程。。。。
那么,有谁能告诉我如何在我的应用程序中使用多线程…?

您可能希望签出线程池来处理输入连接:


阅读
java.util.concurrent
,尤其是
Callable
接口,它比早期java版本中的
Runnable
接口要好,因为它允许您从
调用
方法返回值(与
运行
方法相反)。线程池也很有用-它们由
Executor
类创建为
ExecutorServices
,您可以限制线程的数量,从而限制服务器端的负载。当然,JavaDoc中的例子是一个简单的服务器,它接受来自客户机的连接,因此它可能适用于您的情况(尽管没有非常清楚地描述)


否则,线程是一个非常大的主题,在这里的帖子中真的无法回答。你可以买一本关于Java线程的书,但我不知道哪本是最好的。

正如你所描述的,这显然不是一个多线程问题

  • 如果这是一个客户机驱动的场景(即,客户机选择何时发送屏幕),您可以让他们在服务器中调用一个方法
  • 如果它是服务器驱动的,那么可以使用Observer模式

无论哪种方式,如果问题如您所述,您都可以避免多线程

理想情况下,您应该为自己的服务器实现使用web服务器或应用程序服务器,这些服务器已经可以为您处理此问题

如果这是某种自定义服务器,那么您应该检查线程池,正如前面提到的。如果工作线程执行的工作不需要线程安全(即,只是一个简单的性能并发调度问题),那么这可能就足够了


如果您需要深入了解线程安全编程,那么您需要做更多的研究,阅读更多的书籍,最好还需要一些指导。

这些应用程序是基于Swing的吗?它们之间是什么样的通信?具体在哪里需要多线程在您的客户机中,因为您的客户机不仅发送这些图像,而且还有一些其他功能—在您的服务器中,因为您认为多线程可以提高接收图像的性能—在您的服务器中,因为您的服务器提供了一些其他功能—您有GUI和用户交互吗?Swing/SWT?我不想听起来粗鲁,但如果你问这样的问题,你真的不是实现服务器端线程模型的人。线程的主题和使用远不是简单的,充满了陷阱,而且永远不会像你期望的那样工作。帮你自己一个忙,下载一个应用服务器,这个问题和你将面临的其他问题已经解决了。嗨。。。我已经在一个客户端和服务器上完成了屏幕捕获和控制…现在我想让它成为多客户端应用程序…其中有一个服务器可以捕获多个客户端的屏幕,并从服务器进行控制…那么你能告诉我…怎么可能…我可以使用多线程。。。?如何使用?你能告诉我如何使用多线程多客户端服务器应用程序吗…?我读过的关于Java并发的最好的书是Brian Goetz()的《Java并发实践》