请问为什么会被赋值多次呢?
多线程的时候synchronized锁同一个对象才有用,你的代码里每次同步的都是新的对象,所以同步无效
synchronized(this){
}??而且个人感觉 两个if判断性能太低了,可以用
while(StringUtils.isEmpty(name)){ synchronized(this){ ops.get(); } }
个人建议如果不对请多多指教