Я новичок в использовании методов параллельного программирования и задаюсь вопросом, может ли следующий поток вызвать проблемы при выполнении в нескольких потоках.
Пожалуйста, рассмотрите следующую сущность:
@Getter
@Setter
@Table(name = "CAR")
@Entity
public class Car {
@Id
private BigInteger id;
@Column(name = "model")
private String model;
}
И хранилищеis:
@Service
public interface CarRepository extends JpaRepository<Car, BigInteger>{
}
Я просто хочу знать, находятся ли два потока одновременно в методе синхронизации, есть ли шанс получить DuplicateKeyException?или какое-либо исключение в методе синхронизации ниже из-за многопоточности?
@Transactional
public void sync(final BigInteger id) {
Car car = new Car(id, ....);
Car someOtherCar = new Car(....);
carRepository.save(car);
carRepository.save(someOtherCar);
carRepository.flush();
}
Я попытался использовать приведенный ниже код для тестирования, чтобы вставить одни и те же спецификации автомобиля дважды в один поток, и он работает без проблем.
@Transactional
public void sync(final BigInteger id) {
Car car = new Car(id, ....);
Car sameCar = new Car(id, ....);
carRepository.save(car);
carRepository.save(sameCar);
carRepository.flush();
}
Пожалуйста, дайте мне знать ваши мысли по этому поводу.Спасибо