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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage