Загрузка данных в потоки Java ExecutorService - PullRequest
0 голосов
/ 14 января 2020

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

Я хочу использовать Executors.newFixedThreadPool(n) в качестве моего ExecutorService, поэтому он управляет всем персоналом многопоточности для меня. Если я правильно понимаю, потоки создаются один раз, и тогда все мои задачи выполняются с использованием этих потоков. Так что это идеально подходит для моей проблемы, если возможно загрузить данные в каждый поток при его создании и использовать его для всех задач, которые будут выполняться с использованием этого потока.

Возможно ли это?

Другая идея состоит в том, чтобы просто создать массив из нескольких копий одних и тех же данных с логическим значением isInUse. Поскольку параллельно будет выполняться фиксированное количество задач, просто выберите один объект данных, который в данный момент свободен, отметьте его как выполненный и отметьте его как свободный в конце выполнения задачи. Но я думаю, что мне нужно каким-то образом синхронизировать этот логический параметр между потоками.

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

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