У меня есть фрагмент кода, который записывает объект на диск, когда объект помещается в LinkedBlockingQueue.Создание нескольких потоков для записи файлов на диск, Java
На данный момент это однопоточный. Мне нужно сделать его многопоточным, поскольку содержимое записывается в разные файлы на диске. И поэтому нет никакого вреда в написании их независимо.
Я не уверен, могу ли я использовать ThreadPool здесь, поскольку я не знаю, когда объект будет помещен в очередь! теперь, если я решаю иметь fixedThreadPool из 5 потоков, как мне распределить его между несколькими объектами?
Любые предложения приветствуются. вот мой существующий код. Я хочу создать новый поток, когда и когда я получу новый объект в очереди.
Спасибо @Tirath за ваш ответ. Я в значительной степени убежден. всего лишь 1 сомнение. Если у меня есть несколько потоков, которые прослушивают одну и ту же очередь, это не создаст проблем? 2 потока могут сразу выбрать один и тот же объект! это обрабатывается ThreadPool? ли Threadpool гарантирует, что только 1 поток будет иметь доступ к 1 объекту в очереди? – Ninja
'LinkedBlockingQueue' - это поточно-безопасный класс. Поэтому нет необходимости беспокоиться о том, что несколько потоков обращаются к одной и той же очереди. Его все позаботились. – Tirath
Здесь я попал в другой вопрос. Я создал ThreadPool, потоки прослушивают LinkedBlockingQueue. теперь у меня есть cacheEntrySet, который является объектом в очереди. этот набор также имеет имя файла, который будет записан на диск. Если два объекта имеют одинаковое имя файла, он должен записываться в тот же файл на диске. Как я могу убедиться, что 2 потока не записываются в один файл? так как это испортит мои данные. как назначить поток на основе имени файла? – Ninja