problema con thread

Iniciado por ktdenx, 31 Marzo 2013, 14:41 PM

0 Miembros y 1 Visitante están viendo este tema.

ktdenx

Estoy haciendo un pequeño ejercicio con threats;


import java.util.*;

public class prueba1 implements Runnable{
    double time;
    public static int time1[];
    Thread pepe1;
    Thread pepe2;
    Thread pepe3;
    String a1;
    String a2;
    String a3;
    int a=500;
     
    public prueba1(){
       
        int time1[]=new int[3];
         for(int i=0;i<time1.length;i++){
         double ale1=(Math.random());
         double time=ale1*1000;
        time1[i]=(int) time;
         }
        a1="ejecutado1 en tiempo  "+time1[0];
        a2="ejecutado2 en tiempo  "+time1[1];
        a3="ejecutado3 en tiempo  "+time1[2];
       Thread pepe1=new Thread(this);
        pepe1.start();
   

    }

      public void run(){
                       try{
         pepe1.sleep(500);
         
          }catch (InterruptedException e) { }
                       System.out.println(a1);                       
                   try{
         pepe2.sleep(a);     
          }catch (InterruptedException e) { }
                   System.out.println(a2);
                   try{
         pepe3.sleep(time1[0]);       
          }catch (InterruptedException e) { }
                   System.out.println(a3);
    } 
}
public static void main(String[]args){
prueba1 prueba1=new prueba1();

        }
}


pepe1 funciona ok
pepe2 funciona ok
pero pepe3 da un error

por que no puedo pasar el valor del array al threat?

ThinkByYourself

No sé si serviría, pero podrías probar de declarar la longitud del array en las propiedades de la clase en vez de en el método constructor, aunque el contenido lo pongas luego.

Saludos.
No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.

ktdenx


ThinkByYourself

No te funciona a ti, que no sabes ni lo que te he dicho que pruebes,...
No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.

ThinkByYourself

Aquí tienes tu código. No te voy a dar consejos porque no soy quien.

Código (java) [Seleccionar]

public class prueba1 implements Runnable
{
    double time;
    int time1[] = new int[3];
    Thread pepe1;
    Thread pepe2;
    Thread pepe3;
    String a1;
    String a2;
    String a3;
    int a=500;
     
    public prueba1()
        {
         for(int i=0;i<time1.length;i++)
            {
            double ale1 = (Math.random());
            double time = ale1*1000;
            time1[i] = (int) time;
            }
       a1="ejecutado1 en tiempo  "+time1[0];
       a2="ejecutado2 en tiempo  "+time1[1];
       a3="ejecutado3 en tiempo  "+time1[2];
       Thread pepe1 = new Thread(this);
       pepe1.start();
   

    }

      public void run(){
                       try{
         pepe1.sleep(500);
         
          }catch (InterruptedException e) { }
                       System.out.println(a1);                       
                   try{
         pepe2.sleep(a);     
          }catch (InterruptedException e) { }
                   System.out.println(a2);
                   try{
         pepe3.sleep(time1[0]);       
          }catch (InterruptedException e) {System.out.println(e.getMessage()); }
                   System.out.println(a3);
    } 

public static void main(String[]args)
    {
prueba1 ayAyAyQueSiFuncionaESO = new prueba1();

        }
}


Saludoooos ;)
No te voy a engañar.
Todos hemos sido programados para normalizar la psicopatía de las élites económicas y políticas, y para realimentar su patrón de ciega codicia.

ktdenx

Je,je, no te piques, ya se que no se mucho de esto...por eso pregunto ....lo habia probado (mal) y no me habia funcionado. :silbar: :silbar:

Tienes razon, si funciona, pero no entiendo por que no funcionaba antes;

¿se tiene que definir siempre en las propiedades de la clase la longitud de la matriz para utilizarla en otra clase o es un caso particular?
saludos y gracias