我想测试用作ID计数器的同步方法。为了测试给定方法返回的ID的唯一性,我想在两个线程之间创建竞争状态,这两个线程将同时调用给定方法。请问我该如何实现?

class Counter{
    private static int nextId = 1;
    public static synchronized int nextId() {
        int id = nextId;
        nextId += 1;
        return id;
    }
}

最佳答案

无法在发布的代码上创建竞争条件。
可变的共享状态是私有静态nextId变量,
它由类实例的内部锁保护。
没有两个线程可以输入同步的nextId方法,
因此,没有竞赛条件。

07-24 16:40