[SOLUCIONADO]como usuar varios hilos en una clase??

Iniciado por josco, 26 Junio 2010, 19:58 PM

0 Miembros y 2 Visitantes están viendo este tema.

josco

hola que tal estoy haceindo un jueguillo, entonces tengo un juego que hice que usa un hilo principal para mover el juego este es el metodo run:

Código (java) [Seleccionar]
public void run() {
     Graphics g = getGraphics();
   
   // ciclo principal del juego
   while (!sleeping) {
     
     update();
     dibujar(g);
     try {
       Thread.sleep(33);
     }
     catch (InterruptedException ie) {}
   }


pero quiero ponerle al juego, algo asi como un cronometro, pero eso seria otro hilo que envez de que se duerma 33, se duerma 1000 (un segundo). pero que solo afecte al cronometro.

como le puedo hacer?? :huh: :huh: :huh:

DEBCI-Intenta poner el code con etiquetas geshi de java.

Leyer

Puedes hacerlo de varias formas

     
Código (java) [Seleccionar]
   Thread thread = null;
        Runnable runnable = new Runnable() {
@Override
public synchronized void run() {

}
};;
thread = new Thread(runnable);
thread.start();


      
Código (java) [Seleccionar]

new Thread(new Runnable() {
@Override
public void run() {

}
});

Debci

Cita de: LEYER en 26 Junio 2010, 20:09 PM
Puedes hacerlo de varias formas

     
Código (java) [Seleccionar]
   Thread thread = null;
        Runnable runnable = new Runnable() {
@Override
public synchronized void run() {

}
};;
thread = new Thread(runnable);
thread.start();


      
Código (java) [Seleccionar]

new Thread(new Runnable() {
@Override
public void run() {

}
});

Creo que es mas sencillo:

Código (java) [Seleccionar]

public class HiloCronometro extends Thread
{
public HiloCronometro(int dato)
{
//Prototipo creado por si quieres compartirle datos al thread facilmente
//En el cuerpo del prototipo podemos incializar datos, convertirlos...
}
public void run()
{
//Cuerpo de ejecucion del thread
}
}


Y para arrancarlo:

Código (java) [Seleccionar]

HiloCronometro crono = new HiloCronometro();
crono.start();

Y tendremos un proceso de baja prioridad corriendo paralelamente a nuestro programa.

Saludos

josco

gracias ya pude  ;D ;D ;D aunque no se si lo implemente bien pero funciona lo que hice fue hacer la clase  HiloCronometro asi

public class HiloCronometro extends Thread
{
  private int time;
  public HiloCronometro(int timeh)
  {
      time = timeh;

   //Prototipo creado por si quieres compartirle datos al thread facilmente
   //En el cuerpo del prototipo podemos incializar datos, convertirlos...
  }
  public void run()
  {
    while(1>0)
        try {
        Thread.sleep(1000);
        time++;
      }
      catch (InterruptedException ie) {}
  }
  public int mandar()
  {
    return time;
  }
}


y en la clase del juego en el metodo run


HiloCronometro crono = new HiloCronometro(time);
public void run() {
      crono.start();
      Graphics g = getGraphics();//declaramos g para obtener graficos y mandarla
     
    // ciclo principal del juego
    while (!sleeping) {
     
      update();
      dibujar(g);
      try {
        Thread.sleep(frameDelay);     
        time = crono.mandar(); 
      }
      catch (InterruptedException ie) {}
    }
   }

Debci

Veo que te fue mi metodo jeje, es mas sencillo que el que propone LEYER, pero tambien es interesante aprender a usar la interfaz Runnable.

Saludos

PD:Dale un quote de solucionado en el titulo.

egyware

Disculpan que responda el tema solucionado, pero deseo opinar algo.

CitarExisten buenos juegos que usan solo un thread.

Saludos!!

Debci

Cita de: egyware en  1 Julio 2010, 15:12 PM
Disculpan que responda el tema solucionado, pero deseo opinar algo.

CitarExisten buenos juegos que usan solo un thread.

Saludos!!
Por supuesto ;)

Cierro tema, creo que no hay mas que decir.

Saludos