我想测试用作ID计数器的同步方法。为了测试给定方法返回的ID的唯一性,我想在两个线程之间创建竞争状态,这两个线程将同时调用给定方法。请问我该如何实现?
class Counter{
private static int nextId = 1;
public static synchronized int nextId() {
int id = nextId;
nextId += 1;
return id;
}
}
最佳答案
无法在发布的代码上创建竞争条件。
可变的共享状态是私有静态nextId
变量,
它由类实例的内部锁保护。
没有两个线程可以输入同步的nextId
方法,
因此,没有竞赛条件。