Инициализация вашего приложения с использованием многопоточности в Java - PullRequest
3 голосов
/ 08 мая 2020

Я новичок во всей многопоточности в Java, и я не могу что-то понять.

Я пытаюсь правильно инициализировать свое приложение, используя многопоточность.

Например, я использую базу данных (точнее, mongodb), и мне нужно инициализировать соединение с ней, а затем подключиться и проверьте, существует ли коллекция, а затем прочитайте ее.

Как только я ее получу, у меня в конечном итоге будет представление списка (JavaFX), в котором будет отображаться информация, взятая из базы данных.

В идеале, пока это происходит, я бы хотел, чтобы выполнялись другие вещи (в истинном многопоточном стиле).

Нужно ли мне помещать каждую отправленную задачу в своего рода очередь и затем выполните итерацию, подождите, если они не готовы, а затем удалите их, когда они будут готовы?

Ответы [ 3 ]

1 голос
/ 08 мая 2020

Используйте асинхронный клиент MongoDB, подобный упомянутым выше высокоуровневым здесь

  • MongoDB Rx Java Driver (реализация Rx Java драйвера MongoDB)
  • MongoDB Reactive Streams Java Driver (реализация реактивных потоков для JVM)
1 голос
/ 10 мая 2020

Вам необходимо согласовать частичные задачи. Если вы представляете задачи с потоками, координация может выполняться с использованием семафоров и / или блокирующих очередей.

Более эффективный способ - представлять задачи как акторы потока данных - они потребляют меньше памяти, и вы можете сгенерировать все задачи сразу начало.

1 голос
/ 08 мая 2020

Для этого вы можете добавить пул соединений для вашего приложения.

Все зависит от конфигурации вашего проекта.

Лучше всего сделать его настраиваемым. При низкой нагрузке у пула должно быть ~ 4 соединения (мин.). При увеличении нагрузки может go до 20 (макс.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...