はい、同期は1つの側面として扱うことができます。 AOPの背後にあるアイデアは、クロスカッティングの問題を処理するのではないのですか次に、外部ライブラリを定義したり使用したりすることなく、AOPを介してクロスカットの問題として同期を処理できます。
読み書きロックに関する次の例を検討してください。オブジェクトが読取り/書込みの対象となるときはいつでも、メソッドを捕捉して並行性制御に十分な機能を提供できます。
public abstract aspect ReadWriteLockSynchronizationAspect
perthis(readOperations() || writeOperations()) {
public abstract pointcut readOperations();
public abstract pointcut writeOperations();
private ReadWriteLock _lock = new SomeReadWriteLock();
before() : readOperations() {
_lock.readLock().acquire();
}
after() : readOperations() {
_lock.readLock().release();
}
before() : writeOperations() {
_lock.writeLock().acquire();
}
after() : writeOperations() {
_lock.writeLock().release();
}
}
perthis
は、読み取り/書き込み操作ごとに新しいアスペクトを作成します。それ以外の場合は、1つのアスペクトだけが作成され、シングルトンオブジェクトのように機能します。詳細はAspectJ in Actionを参照してください。