So verwenden Sie die Feder-Transaktion in Multithread

Habe ich eine Methode wie folgt:

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();
}

Können die methodB gut funktionieren? Pro mein Verständnis, methodB hängt die Transaktion von methodA, was ist, wenn methodA beendet, bevor methodB? Ich denke, nur methodA können getroffen werden, die von der Transaktion. Aber methodB nicht Begehen, da die Transaktion commited vor.

Kann ich mit @Transactional(propagation = Propagation.REQUIRES_NEW) für methodB. Diese können wir methodB haben eine neue Transaktion. Aber nach Frühling doc, der transcation von methodA sperren, wenn Sie es aufrufen methodB. Ich fühle mich sehr verwirren hier.

Kann mir jemand helfen bei diesem Problem? Vielen Dank im Voraus.

Kommentar zu dem Problem
was genau wollen Sie es tun? Kommentarautor: Michael Wiles

InformationsquelleAutor der Frage Jacky | 2012-05-02

Schreibe einen Kommentar