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