在Java中使用多线程初始化应用程序

在Java中使用多线程初始化应用程序,java,multithreading,Java,Multithreading,我对Java中的整个多线程技术还不熟悉,但我对一些事情还没有完全了解 我正在尝试使用多线程正确初始化我的应用程序 例如,我正在使用一个数据库(确切地说是mongodb),需要初始化与它的连接,然后连接并检查集合是否存在,然后从中读取 一旦有了它,我最终会有一个列表视图(JavaFX),它将显示从数据库中获取的信息 理想情况下,当这正在进行时,我希望做其他事情(以真正的多线程方式) 我是否需要将每个提交的任务放入一个排序队列中,然后迭代,如果它们还没有准备好,等待,然后在完成后删除它们 我一直都是

我对Java中的整个多线程技术还不熟悉,但我对一些事情还没有完全了解

我正在尝试使用多线程正确初始化我的应用程序

例如,我正在使用一个数据库(确切地说是mongodb),需要初始化与它的连接,然后连接并检查集合是否存在,然后从中读取

一旦有了它,我最终会有一个列表视图(JavaFX),它将显示从数据库中获取的信息

理想情况下,当这正在进行时,我希望做其他事情(以真正的多线程方式)

我是否需要将每个提交的任务放入一个排序队列中,然后迭代,如果它们还没有准备好,等待,然后在完成后删除它们

我一直都是单线程的,速度总是很慢


干杯

为此,您可以为您的申请添加

一切都取决于项目的配置


最好是使其可配置。当负载较低时,仅在池中有~4个连接(分钟)。如果负载增加,它可能会上升到20(最大)。

使用异步MongoDB客户端,如上面提到的高级客户端

  • MongoDB RxJava驱动程序(MongoDB驱动程序的RxJava实现)
  • MongoDB反应流Java驱动程序(JVM的反应流实现)

    • 您需要协调部分任务。如果使用线程表示任务,则可以使用信号量和/或阻塞队列来完成协调


      更有效的方法是将任务表示为数据流参与者-它们消耗更少的内存,您可以在一开始就生成所有任务。

      但这只是针对数据库,而不是初始化应用程序的其余部分?@JamieRhys这是因为您的问题实际上没有什么问题。在不了解项目细节的情况下,很难给出如何以并发方式重构项目的建议。我的建议只是分成几个单独的问题,再加上一些细节。