Amigos, quando executada a instrução MinhaThread obj = new MinhaThread(); (1), não deveria chamar o método construtor MinhaThread() (2) e automáticamente executar o método run() (4)? Devido a presença da instrução runner.start(); (3) no construtor?
No System.out.println(obj.soma); (5) retorna 0 ao invés de 3. :oops:
Deveria isso tudo, mas nada garante que o while corre primeiro que o println e por isso pode acontecer que o println mostre 0 ao inves do numero esperado. A primeira regra para trabalhar com Threads: Não assuma nada.
M
murganhoPJ
sergio,
Então poderia exemplificar a maneira correta para chegar aquele resultado?
Também, pode me dar uma dica quanto a maneira mais adequada pra finalizar uma thread?
Obrigado.
J
jaireltonPJ
Coloque um join() logo apois iniciar a Thread…
runner.start();
runner.join();
U
Uchiha_ItachiPJ
Pessoal… eu terminei de ler sobre threads na apostila da caelum, mas
ainda nao consegui entender pra que serve uma!.. poderiam dar
uma simplificada aew pra vê se eu entendo?
Valeu!
S
sergiotabordaPJ
sergio,
Então poderia exemplificar a maneira correta para chegar aquele resultado?
Também, pode me dar uma dica quanto a maneira mais adequada pra finalizar uma thread?
Obrigado.
Como o jairelton ja disse a forma de esperar é invocar join.
join significa “junta a thread corrente no fim” e é na realidade um wait() especial.
Pessoal… eu terminei de ler sobre threads na apostila da caelum, mas
ainda nao consegui entender pra que serve uma!.. poderiam dar
uma simplificada aew pra vê se eu entendo?
Valeu!
Uma não serve para muito … … várias servem.
uma Thread representa um processo de execução. Uma sequencia de comandos. Mas acontece que muitas vezes é nenessário executar dois ou mais processsos simultaneamente. Então temos que criar várias threads que correm simultaneamente .
Exemplo: Vc lê um arquivo de endereços e grava o banco.
Poderiamos ler todos os endereços e depois gravar todos no banco.
MAs poderiamos também ter uma thread lendo e simultaneamente
uma que escreve. Isto aumenta a velocidade com que o programa faz o mesmo trabalho e diminui a memoria necessária pq não tivemos que ler todos os produtos de uma so vez.
Outro uso é num servidor. Quando o servidor recebe uma requisição ele faz um determinado processo e envia uma resposta ao usuário. Mas como vazer para processar vários usuários simultaneamente ?
A resposta é criar várias threads. Cada uma analizando e respondendo ao seu usuário. Tudo isto, sem que o outro usuário tenha que esperar a sua vez.
M
murganhoPJ
Muito esclarecedor!
Agradeço a todos!
Estou pesquisando uma literatura adicional e exemplos para aprender corretamente.
Os conceitos haviam ficado vagos, pois não avancei no livro que tenho. Há certa dificuldade, pois não sou programador, mas professor do ensino fundamental. Estou levando JAVA à sala de aula, para auxiliar no estudo da matemática.