项目中没考虑线程安全
@Service@Transactionalpublic class MedicalPopularMaterialService implements MedicalPopularMaterialServiceInterface { //成员属性 public Setlabels = new LinkedHashSet<>(); private void makeMaterial(MedicalPopularMaterialBaseCommand command, MedicalPopularMaterial material) { //没有考虑线程安全 labels.addAll(command.getLabels()); settingServiceInterface.setGlobalSetting(A,B,labels, command.getCreatedUserId()); }}复制代码
MedicalPopularMaterialService是单例的(被Spring创建的类是单例),同一个对象,,当两个线程同时访问,
解决线程安全的方法:
分布式锁
Redis锁机制
sychornized 单个进程之间的多个线程 但对于分布式服务,多个进程之间容易出现问题。