Java Runnable拥有大量任务Rainbow Table

时间:2012-02-16 16:02:13

标签: java multithreading runnable

我正在用Java编写Rainbow Table生成器,现在是实现多线程以提高整个过程速度的时候了。

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

在SwingWorker中是Runnable:

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

为了调用populateTable,我实现了一个带有FixedThreadPool的ExecutorService,它由四个线程组成,用于生成和写入磁盘,run()方法也是同步的:

ExecutorService executor = Executors.newFixedThreadPool(4);

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

每个populateTable run()在最终将某些内容写入文件之前执行2000次操作。

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

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

我希望这是有道理的,任何建议或意见都会受到高度赞赏。

由于

约什

2 个答案:

答案 0 :(得分:1)

在线程池上执行4000万次的某些操作不太可能有效。相反,将工作分成4个部分并执行4个runnable,每个runnable计算该部分并以适当的批次刷新结果。

答案 1 :(得分:1)

如果你想在函数计算部分有更高的效率,那么每个产生四个线程,每个线程重复1/4。如果您需要更多内容,则必须忘记Java并转到this