【发布时间】:2010-08-16 11:58:58
【问题描述】:
我已经为此苦苦挣扎了 7 天。我们将不胜感激您的见解。
考虑框架代码。
final class Main {
// assuming programmerCode was injected
Interface inter = (Interface) programmerCode;
inter.doProcess();
}
interface Interface {
void doProcess();
}
abstract ProgramApp implements Interface {
public void doProcess() {
for (File file : files) {
foo(file);
bar(file);
}
}
public abstract void foo(File file);
public abstract void bar(File file);
}
abstract Program extends ProgramApp {
public final void doProcess() { }
}
以及使用它的代码,
class ProgrammerCode extends Program {
File file;
String a1;
String a2;
public void foo(File file) {
// read file per line store in a1
}
public void bar(File file) {
// read file per line and append somestring and store in a2
}
}
目前,该程序按顺序处理文件。关于如何在不触及 ProgrammerCode 的情况下使该程序并行处理文件的任何建议?
目标:每个文件都应该使用 ProgrammerCode 中的方法实现独立地并行处理,而不需要修改它。修改应该在框架代码的某处进行。
我真的不知道把线程部分放在哪里。我的假设是它应该在文件循环中,但我不知道它是否是线程安全的,因为我将使用 ProgrammerCode 中定义的方法。
【问题讨论】:
标签: java multithreading thread-safety