我有一个在大问题集上运行的算法。它读取问题实例, 然后针对从文件中读取的问题运行算法。
可以对解空间进行分区(可以拆分为覆盖整个空间的不相交集)。 也就是说,该算法可以利用并发/多线程。
目前没有进行任何并发处理。 但是,对于后面的增强功能,我正在尝试为此构建类。
我正在做的一件事是:
保持现场成员和读取问题但没有影响或受解决方案实例影响的方法static
&安培;
其余成员 - 特定于每个解决方案空间的字段变量&在解决方案空间上运行的方法为non-static
。
此时我是否应该为未来的并发做更多的事情?
TIA。
答案 0 :(得分:0)
构造问题文件,以便您可以立即开始处理子问题,而不是构造文件,以便在开始处理之前需要读取整个文件。例如,使用 | 作为分隔符,文件看起来像
[size_of_subproblem_header]|[size_of_subproblem_0]|[size_of_subproblem_1]|...|[subproblem_0]|[subproblem_1]|...
然后你可以使用类似BufferedReader
的东西来读取子问题标题的大小,然后使用 read(char [] cbuf,int off,int len)来读入每个单独的子问题并将其发送到工作队列,在那里它将被解析和处理,而无需等待整个问题被读取+解析