ReadWriteLocksImpl.java

package net.dapete.locks;

import java.util.concurrent.locks.ReadWriteLock;
import java.util.function.Supplier;

class ReadWriteLocksImpl<K, L extends ReadWriteLock> extends AbstractLocks<K, L> implements ReadWriteLocks<K, L> {

    ReadWriteLocksImpl(Supplier<L> lockSupplier) {
        super(lockSupplier);
    }

    @Override
    public final L readLock(K key) {
        final var lock = get(key);
        lock.readLock().lock();
        return lock;
    }

    @Override
    public final L writeLock(K key) {
        final var lock = get(key);
        lock.writeLock().lock();
        return lock;
    }

}