Я разработал решение для проблемы читателя / писателя в Java (некоторая информация по этому вопросу http://lass.cs.umass.edu/~shenoy/courses/fall08/lectures/Lec11.pdf).
Однако я не уверен, как изменить код так, чтобы он либо благоприятствовал авторам, либо предоставлял и читателю, и писателю то же самоеПриоритет. Какой тип этой проблемы мой код и как я его вижу?
public class ReaderWriter{
int numberOfReaders;
int numberOfWriters;
public ReaderWriter(){
this.numberOfReaders = 0;
this.numberOfWriters = 0;
}
public synchronized void requestRead(){
while(this.numberOfWriters > 0)
wait();
this.numberOfReaders++;
}
public synchronized void releaseRead(){
this.numberOfReaders--;
notifyAll();
}
public synchronized void requestWrite(){
while(this.numberOfReaders > 0 || this.numberOfWriters > 0)
wait();
this.numberOfWriters++;
}
public synchronized void releaseWrite(){
this.numberOfWriters--;
notifyAll();
}
}