Java EE 7 - 新线程是否会加入正在进行的事务并 commit/rollback 在起始线程结束时?
Java EE 7 - will new threads join ongoing transaction and commit/rollback at end of starting thread?
doStuff(tasks);
...
@Transactional
public void doStuff(List<Task> tasks) {
// run async
for(... task ...)
new Thread(() -> localServiceB.handle(task)).start();
}
....
@Transactional
public class LocalServiceB {
public void handle() ....
}
?外交易什么时候结束?
? cand "handle() 加入来自 "doStuff" 的事务?
?单个事务如何跨越 doStuff 和所有分叉线程,直到最后一个“句柄”完成,即使“doStuff”已经完成。 (提示:我更喜欢 doStuff 不要等待线程)
没有显式事务的所有任务运行(它们不在应用程序组件的事务中登记)。
https://docs.oracle.com/javaee/7/api/javax/enterprise/concurrent/ManagedExecutorService.html
doStuff(tasks);
...
@Transactional
public void doStuff(List<Task> tasks) {
// run async
for(... task ...)
new Thread(() -> localServiceB.handle(task)).start();
}
....
@Transactional
public class LocalServiceB {
public void handle() ....
}
?外交易什么时候结束?
? cand "handle() 加入来自 "doStuff" 的事务?
?单个事务如何跨越 doStuff 和所有分叉线程,直到最后一个“句柄”完成,即使“doStuff”已经完成。 (提示:我更喜欢 doStuff 不要等待线程)
没有显式事务的所有任务运行(它们不在应用程序组件的事务中登记)。
https://docs.oracle.com/javaee/7/api/javax/enterprise/concurrent/ManagedExecutorService.html