草庐IT

addNewRow

全部标签

java - 单事务跨多线程解决方案

据我了解,所有事务都是线程绑定(bind)的(即上下文存储在ThreadLocal中)。例如如果:我在事务父方法中启动事务在异步调用中使数据库插入#1让数据库在另一个异步调用中插入#2然后这将产生两个不同的事务(每个插入一个),即使它们共享相同的“事务”父级。例如,假设我执行了两次插入(并使用了一个非常简单的示例,即为了简洁起见,不使用执行程序或可完成的future等):@TransactionalpublicvoidaddInTransactionWithAnnotation(){addNewRow();addNewRow();}将根据需要执行两个插入,作为同一事务的一部分。但是,如