我的问题很简单:
我在 Ubuntu 上工作,我用 Java 编写了一个程序(使用 Eclipse IDE)。该程序不会在任何地方读取或写入任何内容,它只是进行大量计算并创建许多自制类的实例。程序的输出很简单:它在终端中写入A、B或C。(认为它是一个随机过程)
我必须重复运行程序,直到我得到 1000000 次 A 并计算我得到 B 和 C 的次数。我做到了,它有效,但它太慢了。
例如:输出为:“A:1000000 B:1012458 C:1458”
这是我需要你帮助的地方:
我想并行化程序。我尝试了多线程,但它没有更快地工作!所以,虽然每个模拟都是独立的,但我想进行多重处理。例如,我想创建 10 个进程并要求他们运行程序,直到 A 出现 100000 次。(所以我想要的 10 * 100000 = 1000000)问题是我需要知道 B 和 C 的总数,现在我得到了每个 10 的值。
我能怎么做?我尝试了 ProcessBuilder ( http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html ) 但我不明白它是如何工作的!
到目前为止,我唯一的想法是在终端中使用以下命令询问我的程序(A 直到 100000)10 次:“java Main & java Main & java Main & java Main & java Main & java Main & java Main & java Main & java Main & java Main" 但是我必须手动计算 B 和 C 出现的总和。我相信有更好的方法来做到这一点!我考虑过创建 10 个值为 (A)、B 和 C 的文件,然后读取所有文件并对其进行总结,仅对某个整数求和确实需要大量工作,不是吗?
谢谢转发,我正在等待帮助:D
ps:为了方便回答,假设我有一个名为“prog”的程序,它只接受代表 AI 想要达到的数量的 int 参数。