Como o segundo acesso à Servelet alterou a variável filtro se a thread estava dormindo. Só depois que a thread acordasse é que ela deveria entrar no método doGet e alterado a variável filtro para doce. Não entendi.
Como o segundo acesso à Servelet alterou a variável filtro se a thread estava dormindo. Só depois que a thread acordasse é que ela deveria entrar no método doGet e alterado a variável filtro para doce. Não entendi.
Boa tarde, Felipe! Como vai?
Isso acontece pq cada usuário que acessa a Servlet será atendido por uma thread diferente e cada uma delas vai compartilhar o atributo filtro
. Ou seja, quando se faz Thread.sleep(10000)
o que acontece é que a thread que está passando por aquela instrução vai dormir. Mas nada impede de já existirem outras threads que já dormiram, inclusive já acordaram e estão em outra parte do código!
É justamente por esse motivo que gerenciar um ambiente multithread é difícil: por causa da concorrência!
Então a boa prática é evitar ao máximo de criar atributos nas suas Servlets a não ser que vc trate corretamente na raça a concorrência de acesso aos atributos! Assim como foi destacado pelo instrutor!
Pegou a ideia? Qualquer coisa é só falar!
Grande abraço e bons estudos!