class Dekker implements Lock {
boolean wantCS[] = {false, false};
int turn = 1;
public void requestCS(int i) { // entry protocol
int j = 1 - i;
wantCS[i] = true;
while (wantCS[j]) {
if (turn == j) {
wantCS[i] = false;
while (turn == j) ;// busy wait
wantCS[i] = true;
}
}
}
public void releaseCS(int i) { // exit protocol
turn = 1 - i;
wantCS[i] = false;
}
}