Como usar a transação de primavera em multithread
Eu tenho um método como abaixo:
<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>
O método B pode funcionar bem? Pelo meu entendimento, o método B anexará a transação do método A, e se o método A sair antes do método B? Eu acho que apenas methodA pode ser confirmado pela transação. Mas o methodB não irá confirmar porque a transação foi confirmada antes.
Posso usar @Transactional (propagation = Propagation.REQUIRES_NEW) para methodB. Isso pode permitir que o método B tenha uma nova transação. Mas, de acordo com o doc da primavera, a transcração do método A será suspensa quando invocar o método B. Eu me sinto muito confuso aqui.
Alguém pode me ajudar nessa questão? Desde já, obrigado.