AOP@Work: 使用AspectJ 5检验库方面 - 编程入门网
高系统的响应性 。Liz 对 Gail 略有不满,因为 Gail 近来获得的能力使其可将一切内容记录入 日志,导致系统速度变慢。她们已经尝试使用了过滤器,但无论是 Liz 还是 Gail 都不愿为时间而放弃信息。
您提供了 SpawnTrueVoids,将指定空方法重定向到在另一个线程内运行的工 作队列。在 Connor 的协助下,Liz 编写了 SpawnLogging,扩展 SpawnTrueVoids 以将空日志记录调用排序到另外一个线程内。不幸的是,至少 在 日志记录线程内存在需要依序运行的非空方法。Kelli 提出了两种模式,用于日 志记录程序的初始化(无空日志调用,除某些正在变化的调用外)和日志记录( 仅空日志调用,迅速被带入单独线程中的队列)。然而,Liz 希望保留在运行时 通过 JMX 配置日志记录程序的能力。 Zed 得出结论,显式并发非常困难,所以使其为粗心的客户机所用更是难上 加 难。但在开发时,可出于调试的目的使用显式并发完成额外的跟踪工作。将来, Liz 和 Kelli 还可尝试更多的解决方案。 并行方法执行 关于实验,Liz 还有另外一种想法。她希望试试并发重构的另外一种方法, 但 已厌倦了包含于打包代码中的样本,也厌倦了线程调用。如果使用注释声明一种 方法为 “并行的”,会怎样呢?方法中的所有代码都可并发执行。 所有人都投入这项工作中。最后,ParallelMethodImpl 合并了多种惯用特性 和新特性。与 TimedCachedItem 相似,它使用了一个注释 (ParallelMethod) 来 标识并行方法。 至于状态关联,ParallelMethodImpl 将为各并行方法的方法执行维护一个 Future 列表,表示产生的方法调用的未来可能结果。由于这一未来结果集合特 定 于并行方法的给定调用,因此为并行方法执行的各控制流实例化一个 ParallelMethodImpl,如清单 13 所示: 清单 13. ParallelMethodImpl 实例化
实现并行方法 通知本身相当简单,只是防护和调用。通知首先检查执行器(在线程内运行 代 码的 Java 5 工具)。若执行器不可用,通知将同步启动。否则将创建并运行 Future。 清单 14. 实现并行方法
AOP@Work: 使用AspectJ 5检验库方面(11)时间:2011-09-07 IBM Wes IsbergConnor 详述了实例化与配置之间的不匹配。对于实例化,方法的每个控制流 都有一个方面。对于配置,方面的所有实例都使用同一个 ExecutorService。 Liz 按 Java 语言中的可行方法解决了此问题:ParallelMethodImpl 中的静态 方法获取方面实例所使用的工厂以在创建时获得 ExecutorService。使用工厂方 法使方面实例间可实现状态共享。 Zed 喜欢这种方法,因为开发时方面可使 Liz 的实验更简单。通过方法注释 可非常清楚地了解正在发生的情况,而且不需要在匿名 Runnable 中打包代码。 各位,干得好! Mary 成为观察者,完成艰巨的任务 Mary 随时留心需要做的工作。她想要一种实现一流观察者协议的方面。在 AspectJ 中有多种方法可实现此协议,但您提供了 SubjectObserver,它参数化 各参与类型。各子方面表示一个给定的关系,所以两个组件之间可有多个主体 — 观察者关系,且无任何 API 冲突。关系的定义非常简单,如清单 15 所示: 清单 15. 声明主体-观察者关系
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |