这是“多处理器编程的艺术”中两个线程的多文本实现
private int victim;
// thread-local index, 0 or 1
public void lock() {
int i = ThreadID.get();
victim = i; // let the other go first
while (victim == i) {} // spin
}
public void unlock() {}
他们指出,如果“一个线程先于另一个线程运行”,则此代码将死锁。任何人都可以描述没有发生死锁时交错执行的示例。