Evet senkronizasyon bir yönü olarak tedavi edilebilir. AOP’nın kesişen kaygılarla başa çıkması fikri değil mi? Daha sonra, bir çapraz kesim endişesi olarak senkronizasyon ile ilgili olarak, dış kütüphaneler tanımlanmadan ve kullanılmadan AOP yoluyla ele alınabilir.
okuma-yazma kilitleme hakkında aşağıdaki örneği inceleyin. Bir nesne okuma/yazma konusu olduğunda, yöntemi yakalayabilir ve eşzamanlılık kontrolü için yeterli işlevsellik sağlayabilirsiniz.
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
her biri için yeni bir yönü/yazma işlemi okuma oluşturur. Aksi takdirde, sadece bir yön oluşturulur ve tek bir nesne gibi çalışır. Daha fazla bilgi için AspectJ in Action'u kontrol edin.