Entrar
¿Nuevo usuario? Inscribirme
DesarrolloJava · Desarrollo de Software en Java/J++/J#
? ¿Ya estás suscrito? Entra a Yahoo!

Consejos

¿Sabías que...?
Podés añadir enlaces a sitios relacionados de tu grupo.

Mensajes

  Mensajes Ayuda
Avanzado
Re: [Java] problemas con ThreadPool   Lista de mensajes  
Responder | Reenviar Mensaje #19600 de 25911 |
No estaría faltando hacer el start() en alguno de los threads?
Es decir, por lo que veo estas creando los threads pero no los estás ejecutando.
 
----- Original Message -----
Sent: Wednesday, February 28, 2007 4:30 PM
Subject: [Java] problemas con ThreadPool

Hola a todos,

Tengo el siguiente inconveniente: tengo una clase para manejar los Thread por grupos que se crean con ThreadGroup. Adicionalmente una clase para asignar estas tareas. El problema radica en que se instancia el ThreadPool, se adicionan los objetos implementados de Runnable o extendidos de Thread (ejemplo un sleep(60000) ) y termina repentinamente antes de completar la tarea.

Adjunto Codigo

public class ThreadPool {

    private final String _nombre;

    private ThreadGroup _grupo;

    private List _trabajos = new ArrayList();

    public ThreadPool(String name, boolean daemon) {

       this(new ThreadGroup(name), daemon);

    }

   

    public ThreadPool(ThreadGroup group, boolean daemon) {

        _nombre = group.getName();

        _grupo = new ThreadGroup(_nombre);

       

        if (daemon) {

            _grupo.setDaemon(true);

        }

    }

    public void addTarea(Runnable tarea){

        String nombre = _nombre+"-tarea-"+_trabajos.size();

        _trabajos.add(new ThreadPoolWorker(_grupo,tarea,nombre));

    }

}

public class ThreadPoolWorker {

    private ThreadGroup _group;

    private Thread _worker;

    private static final Log log = LogFactory.getLog(ThreadPoolWorker.class);

   

    public ThreadPoolWorker(ThreadGroup group, Runnable tarea, String name) {

        _group = group;

        _worker = new Thread(_group, tarea, name);

        _worker.setDaemon(_group.isDaemon());

        log.debug("Thread " + _worker.getName() );

    }

}

Clases de Test

public class ThreadPoolManagerTest extends TestCase {

   

    public ThreadPoolManagerTest(String testName) {

        super(testName);

    }

    protected void setUp() throws Exception {

    }

    protected void tearDown() throws Exception {

    }

    /**

     * Test of crearThreadPool method, of class com.selsa.linnet.commons.thread.ThreadPoolManager.

     */

    public void testCrearThreadPool() throws Exception {

        System.out.println("crearThreadPool");

       

        String nombre = "Administrar";

        ThreadPoolManager instance = new ThreadPoolManager();

       

        ThreadPool result = instance.crearThreadPool(nombre);

       

        result.addTarea( new ThreadTest() );       

        // TODO review the generated test code and remove the default call to fail.

    }

   

}

public class ThreadTest extends Thread implements Serializable{

   

    /** Creates a new instance of testThread */

    public ThreadTest() {

    }

   

    public void run(){

        while(true){

            System.out.println("tarea");

            try {

                System.out.println("Esperando 1 minuto");

                sleep(60000);

                System.out.println("Termina Espera");

            } catch (InterruptedException ex) {

                ex.printStackTrace();

            }

        }

    }

}

Para este caso, termina antes de completar el Minuto. Exactamente cuando termina de leer el codigo de las clases.

Alguna idea

Cordialmente,

Juan Carlos Burgos Pulido



Jue, 1 de Mar, 2007 12:22 am

martin_0z0
Sin conexión Sin conexión
Enviar correo Enviar correo

Reenviar Mensaje #19600 de 25911 |
Desplegar mensajes Autor Ordenar por fecha

No estaría faltando hacer el start() en alguno de los threads? Es decir, por lo que veo estas creando los threads pero no los estás ejecutando. ... From:...
Martin
martin_0z0
Sin conexión Enviar correo
2 de Mar, 2007
10:07 pm
Avanzado

Copyright © 2009 Yahoo! de Argentina S.R.L. Todos los derechos reservados.
Política de privacidad - Condiciones del Servicio - Reglas de la comunidad de Yahoo! - Ayuda