并发控制与响应性优化
1. 细化 Swing 单线程规则的解决方案改进
在之前解决方案的基础上,我们可以通过处理异常和利用系统特定知识进行优化来对其进行增强。
1.1 异常处理
当异常由异步路由调用抛出时,异常处理会面临挑战。因为调用者不会等待执行完成,所以无法访问抛出的异常,且异常是在事件调度线程的控制流中抛出的,而非调用者线程。处理这些异常的合理策略是设置一个监听器,在操作失败时进行通知。
以下是修改后的代码示例:
void around() : asyncRoutedCall(){
Runnable worker = new Runnable() {
public void run() {
try {
proceed();
} catch (Exception ex) {
// 处理异常
// 调用异常监听器、记录日志等
// 然后可选择将捕获的异常包装在运行时异常中重新抛出
}
}
};
EventQueue.invokeLater(worker);
}
使用 AOP 修改异常处理策略十分容易。若不使用 AOP,使用匿名类时需修改每个异步路由调用的方法;使用命名类时则需修改每个类,确保一致实现会是一项艰巨任务。而使用 AOP,如决定在将异常传递给异常监听器的同时记录日志,只需更改
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



