Por qual situação eu deveria usar Threads?

14 respostas
A

Estou estudando Threads (para a certificação, mas nunca trabalhei como isso)… Gostaria muito de saber situações que o uso de Thread fosse
digamos imprescindível… E mesmo assim não poderia usar outra maneira tipo criando uma lógica maluca lá usando métodos normais do Java? Posso usar
Threads no ambiente web que é meu foco ou só Desktop?

14 Respostas

lina

Oi,

Utiliza-se Thread para rodar um processo em paralelo a sua execução. Ou melhor, permitem múltiplas atividades dentro de um único processo.

Porque utilizar :?:

:arrow: Responsividade em Interfaces Gráficas: imagine se o seu navegador web parasse de carregar uma página só porque você clicou no menu arquivo?;

:arrow: Sistemas multiprocessados: o uso de threads permite que o SO consiga dividir as tarefas entre todos os processadores disponíveis aumentando, assim, a eficiência do processo;

:arrow: Simplificação na Modelagem de Aplicações: suponha que você precise fazer um programa que simule a interação entre diferentes entidades.
Carros em uma estrada, por exemplo. É mais fácil fazer um loop que atualiza todos os carros da simulação ou criar um objeto carro que anda sempre que tiver espaço a frente dele?

@Informações supracitadas foram encontradas na internet, em algum determinado tempo e espaço.

Um outro exemplo seria a comunicação Socket, contendo as funções SEND e RECEIVE. No qual a função RECEIVE seria uma thread esperando sempre um pacote de “retorno”.

Tchauzin!

Zenas

Olá Amigo,

Na revista mundo Java na edição 41 tem um ótimo artigo sobre Thread e concorrência [Produtor/ Consumidor utilizando Thread].

Espero ter ajudado,
Abraços

Alexandre_Saudate

Não é recomendado que você use Threads no ambiente web, porque se você for usar, pode cair fora do controle do contêiner (por exemplo: se você esquece de declarar uma thread como daemon e quiser encerrar o servidor, vai ter que ficar esperando a thread que você criou encerrar o processamento).

No entanto, você precisa saber que elas existem e como funcionam, já que, tipicamente, cada requisição de um usuário é uma thread criada no servidor. Assim, vale dizer que, por exemplo, métodos sincronizados em classes compartilhadas são PÉSSIMA idéia num ambiente web.

[]´s

arqueiros

Eu já usei threads para atualizar uma base de dados de hora em hora…e era em um sistema web(hoje existe soluções melhores para esse tipo de tarefa por exemplo usando quartz).

A cada uma hora buscava os novos registros em um banco de dados e trazia registros novos para o banco de dados que minha aplicação utilizava.

A

Bom, uma vez me disseram que o Tomcat faz o trabalho da Thread… Pode me explicar melhor? Então, eu nunca devo usar Thread pra web?

Marky.Vasconcelos

Voce dificilmente precisara de um processo em paralelo em ambiente web, a parte das threads que o container faz é abrir uma thread para cada sessão de usuario e trata-los de forma distintas.

Marck

Olá

Para entender bem threads, eu sugiro um livro de Sistemas Operacionais como o do Tanenbaum que com certeza tem na biblioteca de sua faculdade.

lina

Oi,

"Coisas que vc vai aprender:

  • A lidar com pessoas
  • Entender partes sistemas complexos e mal-escritos em algumas horas
  • Técnicas avançadas de depuração
  • Que praticamente todos os sistemas por onde passa algum dinheiro funcionam por um quase-milagre
    - Que quase ninguém que usa Threads sabe o que ta fazendo
  • Que ninguém que compra soluções IBM sabe o que ta fazendo
  • A respeitar a Primeira Lei (http://martinfowler.com/bliki/FirstLaw.html)
  • A chegar no horário (!)
  • A questionar pessoas de forma mais eficiente"

Tchauzin!

Alexandre_Saudate

lina:
Oi,

"Coisas que vc vai aprender:

  • A lidar com pessoas
  • Entender partes sistemas complexos e mal-escritos em algumas horas
  • Técnicas avançadas de depuração
  • Que praticamente todos os sistemas por onde passa algum dinheiro funcionam por um quase-milagre
    - Que quase ninguém que usa Threads sabe o que ta fazendo
  • Que ninguém que compra soluções IBM sabe o que ta fazendo
  • A respeitar a Primeira Lei (http://martinfowler.com/bliki/FirstLaw.html)
  • A chegar no horário (!)
  • A questionar pessoas de forma mais eficiente"

Tchauzin!

Hahahah!! Eu tenho o livro que o Fowler cita, é muito bom. De fato, de Patterns de Integração, mesmo, não tem quase nenhum alí. Isso porque ele quer passar a mensagem do quanto sistemas distribuídos podem ser ruins. Mas, bem, sou suspeito pra falar :wink:

[]´s

Marky.Vasconcelos

Hehehehehe… realmente tive que aprender tudo isso, só não aprendi ainda a chegar no horario. :stuck_out_tongue:

Mas realmente, quase ninguém que usa Threads sabe o que esta fazendo.

TheKill

Hahaha, Prefiro o post da Lina.
Mas sem dúvida que chegar na hora é um ponto fundamental =)

Marky.Vasconcelos

Eu também, só estou concordando com ela :stuck_out_tongue:

TheKill

Lina PWNED!! =D

A

hehehe… Oi lina, td bom? Acho vc super divertida, ao passo que ajuda e muito faz umas analogias hilárias…

abraços,
André AS :smiley:

Criado 8 de setembro de 2010
Ultima resposta 10 de set. de 2010
Respostas 14
Participantes 8