Я боролся с этим уже 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.