我正在用 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 线程需要将密钥传递给 MDLService。那么我应该使用哪种模式?
一只斗牛犬
Helenr
HUWWW
相关分类