Na tecnologia Servlet versão 2.4 ou superior, a execução do ...
Comentários
Veja os comentários dos nossos alunos
Se a diferença entre o acesso é inferior a 5 segundos e o SLEEP é de 6 segundos,
o segundo Browser a acessar o "contador.txt" vai ler o mesmo valor que o primeiro Browser porque este ainda não teve "tempo" p/ alterar o "contador.txt".
Ou o problema é que o Thread não funciona assim?
Pois estou sentindo falta de um t.run() ou "implements Runnable"
Se alguém comentar, agradeço.
A intenção da banca era que achassemos que neste ponto o programa ficaria esperando 6 segundos para continuar sua linha de execução.
Quando outra requisição acontecer algum tempo depois o valor do número exibido será o anterior +1.
Veja a execução iniciada com 1 segundo de diferença, onde coloquei a data/hora no início e no fim. A thread "dorme" por seis segundos, retornando o mesmo valor...
Comecou Sun Mar 04 10:33:10 BRT 2012 número exibido 16 Terminou Sun Mar 04 10:33:16 BRT 2012
Comecou Sun Mar 04 10:33:11 BRT 2012 número exibido 16 Terminou Sun Mar 04 10:33:17 BRT 2012
No entanto, duas coisas me chamaram a atenção.
1. Em um ambiente cliente-servidor, não há garantias que as chamadas por recurso a partir do browser (cliente), ainda que acionadas ao mesmo tempo, cheguem ao servidor ou sejam tratadas por ele ao mesmo tempo. HTTP pressupõe pilha TCP/IP, menor esforço, sem garantias, etc.
2. O trecho da questão diz: a execução do programa apresentado a seguir, em dois browsers distintos
O programa (servlet) apresentado não será executado no browser (cliente) e sim no container web (servidor)
Se for isso mesmo, o examinador floreou a questão com códigos java de modo a nos desviar a atenção.
A thread criada dorme em background, mas não trava a execução do programa, logo os números exibidos serão distintos, pois haverá incremento.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo