Thread - quero fazer o metodo rodar em

6 respostas
H

olá,
To com dificuldades em enteder o uso das threads, se alguem tiver um exemplo de como fazer um metodo rodar em segundo plano pra mim olhar , pois tenho um metodo blocking (ServerSocket) e gostaria de deixalo em segundo plano para o usuár o poder executar outras tarefas no gui

grato

6 Respostas

A

olá hrober,

Uma forma de fazer isso, é vc criar uma classe que extenda a classe Thread:

class BasicThread1 extends Thread {
        //Este é o metodo chamado qdo a thread é iniciada
        public void run() {
        }
    }

e depois vc utiliza da seguinte forma:

// Cria e starta a Thread
    Thread thread = new BasicThread1();
    thread.start();

ai teu processo fica rodando em background…

flw

H

andersonra,
soh uma duvida, eu posso extender duas vezes a class ? class name extends thread , JFrame ?

jah agradeco a ajuda.

N

Num pode… Java nao suporta herança multipla… o que voce pode fazer é herdar JFrame e implementar a interface Runnable que é a mesma coisa que herdar Thread, só que é obrigatória a implementação do método Run() :slight_smile:

F

vc tem duas opcoes nesse caso, uma seria criar uma classe separada q estenda a Thread, e outra eh implementar Runnable:

public class Janela extends JFrame implements Runnable{
 ...
 public static void main(String args[]){
  Janela j = new Janela();
  j.setVisible(true);
  Thread t = new Thread(j);
  t.start();
 }
 ...
 public void run(){
  // aqui vc poe os sockets
 }
}

eu particularmente prefiro usar uma classe separada q estenda a Thread, pq dai fica mais especifico e a classe acaba ficando mais facil para modificar, mas eh vc qm decide como fazer :grin:

N

Eu concordo com o Felipe de separar as classes… odeio massaroca… mas tem vezes que precisa… esses dias eu fiz um trabalho que precisava atualizar a tela de tempo em tempo… dae fiz com trhead… e acabei herdando JFrame e implemenando Runnable

H

galera baseado em que vcs disseram eu fiz o seguiante code

import java.util.Date ;

	class Time
	{
		public static void main(String args[])
		{
		int a=0;
		Thread timeStop = new Thread();
		timeStop.start();
		Thread thread = new basic();
		thread.start();
		for(a = 0 ; a<25;a++)
		{
			try
			{
				System.out.println(a);
				timeStop.sleep(1000);
			}
			catch(InterruptedException e)	
			{
					System.out.println("erro");
			}
		}

		}
	}
	
	class basic extends Thread
	{
		public void run() 
		{
			int b=0;
			for(b=133;b<166;b++)
			{
					try
					{
					System.out.println(b);
					this.sleep(1000);
					}catch(InterruptedException e)
					{
						System.out.println("erro");
					}	
			}
		}
	}

aparentemente tah certo, eh isso mesmo ?
eh dessa maneira mesmo ?

Criado 9 de agosto de 2004
Ultima resposta 10 de ago. de 2004
Respostas 6
Participantes 4