Java singleton类的方法是否是线程安全的,方法内部是否使用了共享资源?

Java singleton类的方法是否是线程安全的,方法内部是否使用了共享资源?,java,multithreading,singleton,Java,Multithreading,Singleton,我有一个Singleton类,它有一个获取锁的方法,所有线程在继续执行方法之前调用该方法。并且根据Redis密钥的值获取锁(如果该值为1个锁,否则不获取) 我不需要同步这个方法吗 public long getLock(Item item) { ValueOperations ops = template.opsForValue(); return ops.increment(item.getKey()); } 无论答案是什么(是/否),请描述原因 由于redis增量操作,此方

我有一个Singleton类,它有一个获取锁的方法,所有线程在继续执行方法之前调用该方法。并且根据Redis密钥的值获取锁(如果该值为1个锁,否则不获取)

我不需要同步这个方法吗

public long getLock(Item item) {
    ValueOperations ops = template.opsForValue();
    return ops.increment(item.getKey());
}

无论答案是什么(是/否),请描述原因

由于redis增量操作,此方法看起来是线程安全的


Redis增量操作本质上是原子操作,Redis操作一次执行一个。

我认为答案取决于
ops.increment
方法。这是Redis INCR操作,你的意思是如果它是原子操作,getLock(Item)方法是安全的吗?