2012-02-16 26 views
0

我正在编写一个使用Java的彩虹表生成器,现在已经到了实现多线程的时间来提高整个流程的速度。Java可运行的大量任务彩虹表

到目前为止,我有一个GUI,它调用一个SwingWorker类来处理表格构造和数据填充。

内的SwingWorker是一个Runnable:

private final Runnable populateTable = new Runnable() { //Generate & write to file}; 

为了调用populateTable我实现了包含4个线程做的产生和写入磁盘FixedThreadPool一个ExecutorService的run()方法也是同步的:

ExecutorService executor = Executors.newFixedThreadPool(4); 

这是我变得有点困惑的地方,并且在多线程时表现出我的无知。

每个populateTable run()在最后写入文件之前执行2000次操作。

populateTable需要运行40,000,000,以便生成足够大的彩虹表供我使用。

运行2000次操作的最佳(当然是有效的)方法是什么?使用四个线程执行4000万次操作?

我希望这是有道理的,任何意见或建议将不胜感激。

感谢

乔希

回答

1

一个线程池4000万次执行的东西不可能是有效的。相反,将工作分成4部分,并执行4个可运行子程序,每个子程序计算该部分并以适当的批次清空结果。

1

如果您想在函数计算部分中获得更高的效率,那么会产生四个线程,每个线程重复四次。如果你还需要更多的东西,你将不得不忘记Java并去找this