Threads in Java

j0keR

Power Member
Boas pessoal,

é possível criar uma Thread sem ser a um objecto!? Tipo..criar uma Thread a um método de uma classe?

Cumprimentos
 
Porque não crias thread à própria classe e executas esse método na thread normalmente?

abraços, HecKel

Desde já obrigado pela ajuda HecKel...

O que tas a dizer é isto?

public void run() {
Método();
Interface();
}

Bem o que eu queria mesmo era que o método fosse executado "por trás" do interface gráfico de x em x segundos e desta forma não sei como fazer pois se fizesse um ciclo para o Método() o Interface() sairia prejudicado!?

Cumps
 
É para isso mesmo que servem as threads!

Crias por exemplo mais uma classe para fazer aquilo que pretendes.


public class ThreadActualizadora extends Thread {
}


Colocas aquilo que pretendes fazer no metodo run() dessa classe
usa o sleep() por exemplo


Depois na tua classe principal crias uma instancia (que irá ser uma thread) dessa classe



ThreadActualizadora threadActualizadora = new ThreadActualizadora();
threadActualizadora .start();
o teu codigo continua a correr

neste momento o teu "programa" continua a execucao e a thread está a correr por trás
Tens de ter em atencao os acessos simultaneos que podem ocorrer a dados por parte de varias threads.
faz pesquisa por synchronized


tens de mandar terminar a thread no fim da execucao do teu programa
 
É para isso mesmo que servem as threads!

Crias por exemplo mais uma classe para fazer aquilo que pretendes.


public class ThreadActualizadora extends Thread {
}


Colocas aquilo que pretendes fazer no metodo run() dessa classe
usa o sleep() por exemplo


Depois na tua classe principal crias uma instancia (que irá ser uma thread) dessa classe



ThreadActualizadora threadActualizadora = new ThreadActualizadora();
threadActualizadora .start();
o teu codigo continua a correr

neste momento o teu "programa" continua a execucao e a thread está a correr por trás
Tens de ter em atencao os acessos simultaneos que podem ocorrer a dados por parte de varias threads.
faz pesquisa por synchronized


tens de mandar terminar a thread no fim da execucao do teu programa


Isso é o que tenho vindo a fazer..Criar Threads a alguns Objectos.

Não queria utilizar uma classe apenas para executar aquele método, pois não sao mais do que duas ou três linhas de código.. E penso que não se justifica.

Queria utilizar alguma coisa do genro do fork(). Criar um processo filho para executar o Método() enquanto o processo Pai tratava do resto. Sabem como fazer isso pessoal?

Cumprimentos
 
Isso é o que tenho vindo a fazer..Criar Threads a alguns Objectos.

Não queria utilizar uma classe apenas para executar aquele método, pois não sao mais do que duas ou três linhas de código.. E penso que não se justifica.

Queria utilizar alguma coisa do genro do fork(). Criar um processo filho para executar o Método() enquanto o processo Pai tratava do resto. Sabem como fazer isso pessoal?

Cumprimentos

se não queres ter um ficheiro e definir uma classe à parte podes utilizar a técnica da classe anónima

Código:
     no meio da tua classe principal
     ...
     Thread t = new Thread(new Runnable() {
          public void run() {
               System.out.println("ola mundo, etc");
          }
     });
     t.start();
     ...
 
se não queres ter um ficheiro e definir uma classe à parte podes utilizar a técnica da classe anónima

Código:
     no meio da tua classe principal
     ...
     Thread t = new Thread(new Runnable() {
          public void run() {
               System.out.println("ola mundo, etc");
          }
     });
     t.start();
     ...

Era isso mesmo q ia postar agora (embora não programe mt em java, sabia q o processo era o mesmo do congénere c# q é a linguagem que mais tnh usado recentemente...)

No entato fica um aviso... numa aplicação grande (e normalmente distribuida por vários programadores) isso nunca deve ser usado pois pode criar conflitos difíceis de detectar/corrigir...

[]
 
se não queres ter um ficheiro e definir uma classe à parte podes utilizar a técnica da classe anónima

Código:
     no meio da tua classe principal
     ...
     Thread t = new Thread(new Runnable() {
          public void run() {
               System.out.println("ola mundo, etc");
          }
     });
     t.start();
     ...

Boas pessoal,

ainda não testei mas penso que isso resolve o meu problema. Muito obrigado pela ajuda pessoal!

Cumprimentos
 
Back
Topo