
com.cedarsoft.utils.MultiReadWriteLock Maven / Gradle / Ivy
The newest version!
package com.cedarsoft.utils;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
/**
*
*/
public class MultiReadWriteLock implements ReadWriteLock {
@NotNull
private final MultiLock multiReadLock;
@NotNull
private final MultiLock multiWriteLock;
public MultiReadWriteLock( @NotNull ReadWriteLock... locks ) {
this( Arrays.asList( locks ) );
}
public MultiReadWriteLock( @NotNull List extends ReadWriteLock> locks ) {
List readLocks = new ArrayList();
List writeLocks = new ArrayList();
for ( ReadWriteLock lock : locks ) {
readLocks.add( lock.readLock() );
writeLocks.add( lock.writeLock() );
}
multiReadLock = new MultiLock( readLocks );
multiWriteLock = new MultiLock( writeLocks );
}
@NotNull
public Lock readLock() {
return multiReadLock;
}
@NotNull
public Lock writeLock() {
return multiWriteLock;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy