Dúvidas sobre threads!

6 respostas
alexandref93

Pra utilizar o thread eu sempre vou tem que sobreescrever o método run pra utilizar o método start???
Qual é grande vantagem do threads???ainda não consegui entender!!! :lol:

Obrigado pela atenção!!!

6 Respostas

bdias1990

Imagina,

que você vai fazer uma aplicação para controlar uma máquina que faz placa mãe e a maquina tenha braços mecanicos que executam uma funcionalidade exemplo so colocar capacitores outra so sokets, so que existe uma partiularidade ,cada funcionalidade depende da outra pois se os braço mecanicos forem colocar capcitores e soket ao mesmo tempo uma não tera espaço pra executar cada um sua tarefa,ai vc me diz é so colocar uma funcionalidade de cada vez pra rodar no thread principal(Main) assim:(Unico processo).

public static void main(String args){

PlacaMae ma = new PlacaMae();

ma.inserirCapacitor(capacitor);//ativa o braço mecanico que coloca o capacitor
ma.inserirSoket(soket);//ativa o braço mecanico que coloca sokets

}

o thread main primeiro coloco o capacitor depois o soket, agora imagina se sua aplicação industrial está eficiente?, isso não pode acontecer pq o tempo de produção vai pro espaço o mais eficiente no caso seria se quando a area ocupada pelo braço mecanico que colocar capacitor estiver livre voce Notifica ao outro braço mecanico que já pode colocar o soket hummmmmm de que forma vamos fazer isso? reposta threads.

voce vai criar para cada braço mecanico um processo que será executado de forma concorrente:

public static void main (String args[]){

Braco bs = new BracoSoket();
bs.start()//ativa o braco que coloca sokets, mais seu processo ainda nao está em execução apenas ta ligado e pronto pra executar;

Braco bc= new BracoCapacitor();
bs.start()// ativo o braco que coloca capacitor, mais seu processo ainda nao está em execução ta ligado pronto pra excutar;

//a questão é qual braco vai executar primeiro eles ja estao ativos no pool de threads(onde tem os thread ativos pronto pra excutar),bem quaquer um pode executar primeiro
//pq o java nao garante qual braco entrara em excução primeiro, pra isso voce vai ter q sincronizar os bracos(threads) da maneira que voce quer q eles executem,como no exemplo
//não basta so colocar a maquina pra fazer uma execução so do main pronto e acabo é necessario ter multiplos mains no caso threads para gerenciar os bracos.

}

espero ter ajudado um pco kkkk e não tenha enrolado ainda mais aff

flw

Zeed01

Boa madrugada galera,

Parabéns pelo exemplo anterior, muito bem elaborado, embora eu tenha me perdido no meio do caminho… rs.

Um exemplo um pouco mais simples, eu acho, você tem uma tela que ao clicar um botão comeca a executar um processo qualquer, por exemplo, ler arquivos de uma pasta e gravar em outra…

Você quer dar a opção do usuário de, por um motivo qualquer, cancelar a copia no meio.

Bom sem o uso de uma thread para executar a tarefa de copiar arquivos essa tarefa seria executada pela thead principal, que é a mesma do seu metodo main, que seria a mesma que “percebe” que o usuario clicou em cancelar… basicamente, o seu programa só voltaria a responder as ações do usuario após o término da tarefa de copiar arquivos… ou seja, adeus botão cancelar…

Complementando… você pode implementar Runnable ao invés de estender Thread.
Mas mesmo assim você terá que implementar o método run, que é o que sua thread vai fazer… só uma dúvida minha, você vê algum problema nisso ? Não entendi muito bem o motivo da sua pergunta.

Acho que é por ai…

[]s

ViniGodoy

O ideal não é sobrescrever o método run da classe thread. E sim, criar um runnable.

Thread t = new Thread(new Runnable() { @override public void run() { //Código da thread aqui. } }).start();

alexandref93

Zeed01:
Boa madrugada galera,

Parabéns pelo exemplo anterior, muito bem elaborado, embora eu tenha me perdido no meio do caminho… rs.

Um exemplo um pouco mais simples, eu acho, você tem uma tela que ao clicar um botão comeca a executar um processo qualquer, por exemplo, ler arquivos de uma pasta e gravar em outra…

Você quer dar a opção do usuário de, por um motivo qualquer, cancelar a copia no meio.

Bom sem o uso de uma thread para executar a tarefa de copiar arquivos essa tarefa seria executada pela thead principal, que é a mesma do seu metodo main, que seria a mesma que “percebe” que o usuario clicou em cancelar… basicamente, o seu programa só voltaria a responder as ações do usuario após o término da tarefa de copiar arquivos… ou seja, adeus botão cancelar…

Complementando… você pode implementar Runnable ao invés de estender Thread.
Mas mesmo assim você terá que implementar o método run, que é o que sua thread vai fazer… só uma dúvida minha, você vê algum problema nisso ? Não entendi muito bem o motivo da sua pergunta.

Acho que é por ai…

[]s

agora entendi, opa, não não vejo nenhum problema, é que eu não estava entendendo ele, dae não conseguia ver a vantagem!!!

Zeed01

Bom dia galera,

alexandref93

É como aquela frase: “Deus me de sabedoria para aceitar as coisas que não posso mudar, coragem para mudar as que posso e sabedoria para saber diferenciar as duas” rs
Java também tem dessas coisas… rsrs

[]s

alexandref93

Zeed01:
Bom dia galera,

alexandref93

É como aquela frase: “Deus me de sabedoria para aceitar as coisas que não posso mudar, coragem para mudar as que posso e sabedoria para saber diferenciar as duas” rs
Java também tem dessas coisas… rsrs

[]s

ashgausaygs oO :smiley:

Criado 25 de agosto de 2010
Ultima resposta 25 de ago. de 2010
Respostas 6
Participantes 4