Olá, estou criando uma aplicação multiusuário com JSF e notei que poderei enfrentar alguns problemas, como quando 2 usuários efetuarem uma compra e o estoque for decrementado. Há a possibilidade de ambos carregarem o objeto ao mesmo tempo, eu gostaria de sincronizar esse acesso, qual é a melhor abordagem para fazer isso? Eu pensei em fazer com threads
Ilustração:
public class Venda {
private String produto;
private int quantidade;
}
public class Estoque {
private int quantidadeDisponivel;
public void realizaVenda(Venda venda){
this.quantidadeDisponivel -= venda.getQuantidade();
}
Produto X = 10
Usuário 1 carrega o produto X.
Usuário 2 carrega o produto X.
Usuário 1 faz uma compra de 3 produto. X = 7
Usuário 2 faz uma compra de 1 produto. X = 9
Usuário 1 e 2 finalizam a sessão respectivamente.
Produto X = 9.
=(