Я довольно новичок в Java и мне очень нравится узнавать об этом. Я сделал программу, которая работает хорошо, но занимает немного больше времени, когда я добавляю больше данных для ее обработки. Я сделал его многопоточным, и это действительно сильно ускорило его, но теперь я думаю о том, чтобы попытаться еще больше ускорить его (очевидно, чем больше времени он должен обрабатывать, тем больше времени требуется). К вашему сведению, моя программа не обменивается данными между потоками, она получает один элемент списка, выполняет некоторые математические операции и загружает результат в базу данных. В идеале несколько рабочих компьютеров получают несколько элементов списка, затем выполняют свою работу, а затем выполняют еще одну работу, пока не закончат ее.
Я провел небольшое исследование и нашел очереди, и не уверен, что это то, что мне нужно, или есть что-то еще (также я думал, что поддержание целостности/мониторинг рабочих может быть слишком сложным для меня, чтобы писать как новичок). У меня дома 4 компьютера (некоторые Linux, Mac и Windows ... но я могу установить Linux vm на все системы, отличные от Linux, если эти решения специфичны для ОС), и я хотел попытаться заставить их начать работать над этой задачей. Я думал о создании очередей Java, которые другие клиенты берут и обрабатывают, но я также видел библиотеки (rabbitmq). Я также кратко просмотрел грид-вычисления.
Это путь или есть лучший способ? Мне не нужен какой-либо код или что-то еще, я просто хочу знать, каковы решения для распределения потоков или какие факторы использовать при их оценке.