package com.datascience.executor;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
/**
*
* @author konrad
*/
public abstract class SynchronizedCommand implements IExecutorCommand{
private Lock lock;
public SynchronizedCommand(ReadWriteLock rwLock, boolean modifies){
adjustLock(rwLock, modifies);
}
private void adjustLock(ReadWriteLock rwLock, boolean modifies){
if (modifies) {
lock = rwLock.writeLock();
} else {
lock = rwLock.readLock();
}
}
@Override
public boolean canStart() {
return lock.tryLock();
}
@Override
public void cleanup() {
lock.unlock();
}
}