Я нахожусь в процессе написания генератора Rainbow Table на Java, и пришло время реализовать многопоточность для увеличения общей скорости процесса.
Пока у меня есть графический интерфейс, которыйвызывает класс SwingWorker, который обрабатывает создание и заполнение таблиц данными.
Внутри SwingWorker есть Runnable:
private final Runnable populateTable = new Runnable() { //Generate & write to file};
Чтобы вызвать populateTable, я реализовал ExecutorService с FixedThreadPool.метод run (), состоящий из четырех потоков для генерации и записи на диск, также синхронизируется:
ExecutorService executor = Executors.newFixedThreadPool(4);
В этот момент я несколько запутался и проявляю свое невежество, когда дело доходит домногопоточность.
Каждый метод populateTable выполняет (2000) операций, прежде чем наконец что-то записать в файл.
populateTable необходимо запустить 40000000, чтобы сгенерировать достаточно большую радужную таблицу для меняиспользовать.
Каков наилучший (и, конечно, эффективный) способ запустить 2000 тВремя операции, 40 миллионов раз с использованием четырех потоков?
Надеюсь, это имеет смысл, и любые советы или комментарии будут высоко оценены.
Спасибо
Джош