So verwenden Sie die Frühlingstransaktion in Multithread
Ich habe eine Methode wie folgt:
<code>ClassA.java @Transactional public void methodA(){ ExecutorService executorService = Executors.newFixedThreadPool(4); executorService.execute(new Runnable() { public void run() { classB.methodB(); } }); } ClassB.java @Transactional public void methodB(){ updateDB(); } </code>
Kann die MethodeB gut funktionieren? Nach meinem Verständnis hängt methodB die Transaktion von methodA an. Was passiert, wenn methodA vor methodB beendet wird? Ich denke, nur Methode A kann von der Transaktion übernommen werden. Methode B wird jedoch nicht festgeschrieben, da die Transaktion zuvor festgeschrieben wurde.
Kann ich @Transactional (propagation = Propagation.REQUIRES_NEW) für MethodeB verwenden? Dadurch kann methodB eine neue Transaktion erhalten. Laut spring doc wird die Transkation von methodA jedoch angehalten, wenn methodB aufgerufen wird. Ich fühle mich hier sehr verwirrt.
Kann mir jemand bei diesem Problem helfen? Danke im Voraus.