Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] bucle for para SwingWorker?

Estas en el tema de bucle for para SwingWorker? en el foro de Java en Foros del Web. Hola Pasteo el código y explico: Código: ArrayList<Model> job = new ArrayList<Model>(); job.add(Up = new Up()); job.add(Down = new Down()); queue(job); Código: public void queue(ArrayList<Model> ...
  #1 (permalink)  
Antiguo 10/02/2014, 17:17
 
Fecha de Ingreso: abril-2010
Mensajes: 78
Antigüedad: 14 años
Puntos: 0
bucle for para SwingWorker?

Hola

Pasteo el código y explico:

Código:
ArrayList<Model> job = new ArrayList<Model>();
	job.add(Up = new Up());
	job.add(Down = new Down());

queue(job);
Código:
public void queue(ArrayList<Model> job) {
	for(final Model m: job){
              m.execute();
	}
}
clase up
Código:
    @Override
    protected Double doInBackground() throws Exception {
        	start();
        return 100.0;
    }

    @Override
    protected void done() {
    	System.out.println("listo up");
    }

Clase down
Código:
    @Override
    protected Double doInBackground() throws Exception {
        	start();
        return 100.0;
    }

    @Override
    protected void done() {
    	System.out.println("listo down");
    }
Tengo este pequeño código, que lo que pretendo es tener una cola de tareas y mediante el for ir ejecutándolas.

Cuando añado 1 tarea lo hace perfecto, el problema es si como en el código de arriba que he puesto, añado dos tareas.

Se ejecutan las dos a la vez y no una tras otra

Alguna idea?


Saludos y gracias de antemano
  #2 (permalink)  
Antiguo 11/02/2014, 05:52
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: bucle for para SwingWorker?

SwingWorker en el fondo son hilos. Si lanzas dos a la vez, no esperan uno por el otro.

En el bucle donde los lanzas, lanza uno y espera que acabe antes de continuar con el siguiente.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 11/02/2014, 05:56
 
Fecha de Ingreso: abril-2010
Mensajes: 78
Antigüedad: 14 años
Puntos: 0
Respuesta: bucle for para SwingWorker?

Si, pero como?

Porque probe con get() y espera pero bloquea el update del progressbar

Saludos y gracias por contestr
  #4 (permalink)  
Antiguo 11/02/2014, 06:42
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: bucle for para SwingWorker?

Si detiene el progressbar, imagino que estás lanzando ese bucle como consecuencia de la pulsación de un botón o algo. Lanza ese bucle en un Thread aparte y llama a get() para esperar.

Pîensa también en la posiblidad de añadir un solo SwingWorker con todas las tareas necesarias. Quizás pueda ser el SwingWorker el que tenga dentro del array de jobs y estos jobs no tienen que heredar de SwingWorker.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 11/02/2014, 11:37
 
Fecha de Ingreso: abril-2010
Mensajes: 78
Antigüedad: 14 años
Puntos: 0
Respuesta: bucle for para SwingWorker?

Hola chuidiang

Gracias por la respuesta.

He cambiado un poco el código, ahora en Model hay un SwingWorker que llama a la función start() y dependiendo del tipo que sea ejecuta un start() u otro (en los hijos, por polimorfismo)

Pero no acabo de entender como hacer eso que me comentas del thread, estoy leyendo tu wiki y varias páginas de internet pero sigue sin funcionarme lo que voy provando
  #6 (permalink)  
Antiguo 11/02/2014, 11:48
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: bucle for para SwingWorker?

Hola:

Sería esto

Código Java:
Ver original
  1. public void queue(final ArrayList<Model> job) {
  2.         new Thread () {
  3.            public void run() {
  4.             for(final Model m: job){
  5.                       m.execute();
  6.                       m.get();
  7.             }
  8.            }
  9.         }.start();
  10. }


Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #7 (permalink)  
Antiguo 11/02/2014, 12:00
 
Fecha de Ingreso: abril-2010
Mensajes: 78
Antigüedad: 14 años
Puntos: 0
Respuesta: bucle for para SwingWorker?

Gracias!!! funciona perfecto!!! era mucho más sencillo de lo que estaba haciendo

Etiquetas: bucle, clase
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:46.