Java 对DB的调用是否会在方法中产生新线程
在下面的Product类中,我有一个addDetails方法调用Java 对DB的调用是否会在方法中产生新线程,java,spring,multithreading,hibernate,Java,Spring,Multithreading,Hibernate,在下面的Product类中,我有一个addDetails方法调用 class Product{ addDetails(){ productDAO.save(productDetails) //Line 3 addAdditionalDetails(productDetails) //Line 4 } } class ProductDAO { @Transactional public void save(P
class Product{
addDetails(){
productDAO.save(productDetails) //Line 3
addAdditionalDetails(productDetails) //Line 4
}
}
class ProductDAO {
@Transactional
public void save(Product productDetails){
entitiyManager.merge(productDetails)
}
}
在产品类中,当控件(线程)到达第3行时,会生成一个新线程,并在第3行上与save同时执行第4行。或者线程首先执行第3行,当它完全执行第3行时,它转到第4行?只有返回第3行时,才会执行第4行 实际上,您不会在新线程中执行
ProductDAO.save()
。此外,EntitiyManager.merge也不会在其自己的线程中执行。
因此,对ProductDAO.save()
的调用将仅作为entitiyManager.merge(productDetails)
返回
如果您编写了如下代码,情况会有所不同,第3行和第4行的顺序也不可预测:
class ProductDAO {
@Transactional
public void save(Product productDetails){
new Thread( ()-> entitiyManager.merge(productDetails)).start();
}
}