Java Runnable 具有大量任务 Rainbow Table

标签 java multithreading runnable

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

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

SwingWorker 内是一个 Runnable:

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

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

ExecutorService executor = Executors.newFixedThreadPool(4);

这就是我变得有些困惑的地方,并且显示出我对多线程的无知。

每个 populateTable run() 都会执行 2000 次操作,然后最终将某些内容写入文件。

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

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

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

谢谢

乔什

最佳答案

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

关于Java Runnable 具有大量任务 Rainbow Table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9314585/

相关文章:

java - synchronized vs ReentrantLock 无竞争锁

Android 线程和 ArrayAdapter

java - 通过网络传递实体?

java - 是否可以在 Java 中将 Map 的键定义为 List?

java - 在 GAE 的本地环境中发送电子邮件

multithreading - bash中的简单后台进程问题

java - 情境使用 : Run tasks in ForkJoinPool vs. new Thread

java - 在 64 位 LInux RHEL5 上运行 Eclipse 64 位的问题

android - onGlobalLayoutListener 与 postRunnable

java - 创建的 Runnables 的 lambda 的不同行为