快速业务通道

AOP@Work: 使用AspectJ 5检验库方面 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
高系统的响应性 。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 实例化

public aspect ParallelMethodImpl percflow(execution (@ParallelMethod * *(..))) {

实现并行方法

通知本身相当简单,只是防护和调用。通知首先检查执行器(在线程内运行 代 码的 Java 5 工具)。若执行器不可用,通知将同步启动。否则将创建并运行 Future。

清单 14. 实现并行方法

void around() : withincode(@ParallelMethod * *(..)) && call(void *(..)) { Executor executor = getExecutor(); if (null == executor) { proceed(); } else { FutureTask<Object> future = new FutureTask<Object>( new Callable() { public Object call() { proceed(); return DONE; }}); futures.add(future); executor.execute(future); } }

AOP@Work: 使用AspectJ 5检验库方面(11)

时间:2011-09-07 IBM Wes Isberg

Connor 详述了实例化与配置之间的不匹配。对于实例化,方法的每个控制流 都有一个方面。对于配置,方面的所有实例都使用同一个 ExecutorService。 Liz 按 Java 语言中的可行方法解决了此问题:ParallelMethodImpl 中的静态 方法获取方面实例所使用的工厂以在创建时获得 ExecutorService。使用工厂方 法使方面实例间可实现状态共享。

Zed 喜欢这种方法,因为开发时方面可使 Liz 的实验更简单。通过方法注释 可非常清楚地了解正在发生的情况,而且不需要在匿名 Runnable 中打包代码。 各位,干得好!

Mary 成为观察者,完成艰巨的任务

Mary 随时留心需要做的工作。她想要一种实现一流观察者协议的方面。在 AspectJ 中有多种方法可实现此协议,但您提供了 SubjectObserver,它参数化 各参与类型。各子方面表示一个给定的关系,所以两个组件之间可有多个主体 — 观察者关系,且无任何 API 冲突。关系的定义非常简单,如清单 15 所示:

清单 15. 声明主体-观察者关系

static aspect A extends SubjectObserver<

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号