use synchronized as the persist listeners, can be modified over multiply
threads