gpt4 book ai didi

java - "In a distributed environment, one does not use multithreding"- 为什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:30:54 24 4
gpt4 key购买 nike

我正在开发一个托管小型 Java 应用程序的平台,所有这些应用程序目前都使用单个线程,位于 Docker 引擎中,使用来自 Kafka 服务器的数据并记录到中央数据库。

现在,我需要将另一个 Java 应用程序放到这个平台上。手头的这个应用程序相对较多地使用多线程,我已经在 Docker 容器中对其进行了测试并且它在那里工作得很好,所以我准备将它部署在可以手动缩放的平台上,也就是说,一些人会定义数字将启动的容器的数量,每个容器都包含此应用程序的一个实例。

我的架构师反对,说“在分布式环境中我们从不使用多线程”。所以现在,我必须重构我的应用程序,从中删除任何与线程相关的逻辑,使其成为单线程。我要求他提供更详细的推理,但他大喊“如果你不知道这个原则,你就没有地方靠近 Java”。

在分布式系统中使用多线程 Java 应用程序真的是错误的吗——一个简单的集群,有十到二十台物理机器,每台机器托管许多虚拟机,然后运行 ​​Docker 容器,其中包含 Java 应用程序。

老实说,我没有看到容器内多线程的问题。这真的是一个错误还是某种程度上的“禁止”?

谢谢。

最佳答案

例如,当您编写将在 Java EE 应用程序服务器中运行的 Web 应用程序时,通常您不应在 Web 应用程序中启动自己的线程。应用服务器将管理线程,并分配线程来处理服务器上的传入请求。

但是,没有硬性规定或理由说明在分布式环境中使用多线程从来都不是一个好主意。

使应用程序成为单线程有一些优点:代码会更简单,而且您不必处理困难的并发问题。

但是“在分布式环境中我们从不使用多线程”并不一定总是正确的,“如果你不了解这个原则,你就没有 Java 的位置”听起来很傲慢和居高临下。

关于java - "In a distributed environment, one does not use multithreding"- 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56184687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com