<分区>
我正在用 Java 编写程序。图片是不言自明的-
main 方法生成三个线程。 SAX 处理器处理输入的 XML 文件,生成 JAXB 对象并将它们放入 guava 缓存中。 Guava 缓存由另一个线程处理。每当任何对象进入缓存时,该线程都会通知第三个线程,即 MDL 生成器(它关联相似的 JAXB 对象,将它们互连并生成另一个 XML 文件,称为 MDL)。我已经为主类编写了以下代码-
package test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class MainClass {
public static void main(String args[]) {
ExecutorService xMLService = Executors.newFixedThreadPool(1);
xMLService.execute(new XMLProcessor());
ExecutorService cacheService = Executors.newFixedThreadPool(1);
cacheService.execute(new CacheProcessor());
ExecutorService mdlService = Executors.newFixedThreadPool(1);
mdlService.execute(new MDLProcessor());
xMLService.shutdown();
cacheService.shutdown();
mDLService.shutdown();
}
}
但现在我对如何在线程之间传递对象以及每当有新对象进入缓存时如何通知 MDL 生成器感到疑惑。在 Java 旧线程模型中,我们可以使用 notify(),但我想使用当前的 ExecutorService。还有异步回调。所以我想知道如何设计这个框架。如何传递对象并通知线程?我们将缓存对象保存在 HashMap 中,CacheService 线程需要将 key 传递给 MDLService。那么我应该使用哪种模式呢?