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

Duda acerca de Threads

Estas en el tema de Duda acerca de Threads en el foro de Java en Foros del Web. Buenas noches, Tengo una pregunta : Si en una clase y tiene un thread para esa clase con su run y dentro de ese run ...
  #1 (permalink)  
Antiguo 29/01/2014, 19:20
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
Duda acerca de Threads

Buenas noches,

Tengo una pregunta : Si en una clase y tiene un thread para esa clase con su run
y dentro de ese run tienes 2 runs más, hace que el programa vaya más lento ?

lo necesito para que se ejecutan más de una cosa.

ejemplo

Código Java:
Ver original
  1. class test1 implements runnable{
  2.  
  3.     public void run(){
  4.         método1();
  5.         método2();
  6.     }
  7.  
  8. }
  9.  
  10. método1( run());
  11. método2(run());

Me gustaría saber si consume más o no afecta.

Tengo otra pregunta los listener necesitan hilos ? lo digo para que siempre estén escuchando, es que me estoy creando unos listeners.

Escuchar = run();

Última edición por drakgoku1; 30/01/2014 a las 06:36
  #2 (permalink)  
Antiguo 30/01/2014, 11:30
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 15 años, 5 meses
Puntos: 13
Respuesta: Duda acerca de Threads

Al tener más de un hilo, obviamente consume más recursos mientras estos se ejecutan, porque si bien no son 2 procesos, los hilos se ejecutan "a la misma vez" y por lo tanto cada uno de ellos solicitará al sistema los recursos que necesita...

Lo de que vaya más lento no lo entiendo del todo...

Los listeners no necesitan hilos, si estás creando tus propios Events/Listeners te recomiendo leer un poco más (si buscas en google encontrarás abundante info al respecto), pero básicamente tendrás una Interface para el Evento otra para el Listener y luego en la clase que lanzará los eventos tendrás una lista de quiénes están escuchando y les avisarás a cada uno... algo así:

Código Java:
Ver original
  1. interface HelloListener {
  2.     public void someoneSaidHello();
  3. }
  4.  
  5.  
  6. class Initiater {
  7.     List<HelloListener> listeners = new ArrayList<HelloListener>();
  8.  
  9.     public void addListener(HelloListener toAdd) {
  10.         listeners.add(toAdd);
  11.     }
  12.  
  13.     public void sayHello() {
  14.         System.out.println("Hello!!");
  15.  
  16.         // Notify everybody that may be interested.
  17.         for (HelloListener hl : listeners)
  18.             hl.someoneSaidHello();
  19.     }
  20. }
  21.  
  22.  
  23. class Responder implements HelloListener {
  24.     @Override
  25.     public void someoneSaidHello() {
  26.         System.out.println("Hello there...");
  27.     }
  28. }
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy
  #3 (permalink)  
Antiguo 30/01/2014, 14:04
(Desactivado)
 
Fecha de Ingreso: agosto-2011
Mensajes: 327
Antigüedad: 12 años, 7 meses
Puntos: 3
Respuesta: Duda acerca de Threads

Cita:
Iniciado por pablor21 Ver Mensaje
Al tener más de un hilo, obviamente consume más recursos mientras estos se ejecutan, porque si bien no son 2 procesos, los hilos se ejecutan "a la misma vez" y por lo tanto cada uno de ellos solicitará al sistema los recursos que necesita...

Lo de que vaya más lento no lo entiendo del todo...

Los listeners no necesitan hilos, si estás creando tus propios Events/Listeners te recomiendo leer un poco más (si buscas en google encontrarás abundante info al respecto), pero básicamente tendrás una Interface para el Evento otra para el Listener y luego en la clase que lanzará los eventos tendrás una lista de quiénes están escuchando y les avisarás a cada uno... algo así:

Código Java:
Ver original
  1. interface HelloListener {
  2.     public void someoneSaidHello();
  3. }
  4.  
  5.  
  6. class Initiater {
  7.     List<HelloListener> listeners = new ArrayList<HelloListener>();
  8.  
  9.     public void addListener(HelloListener toAdd) {
  10.         listeners.add(toAdd);
  11.     }
  12.  
  13.     public void sayHello() {
  14.         System.out.println("Hello!!");
  15.  
  16.         // Notify everybody that may be interested.
  17.         for (HelloListener hl : listeners)
  18.             hl.someoneSaidHello();
  19.     }
  20. }
  21.  
  22.  
  23. class Responder implements HelloListener {
  24.     @Override
  25.     public void someoneSaidHello() {
  26.         System.out.println("Hello there...");
  27.     }
  28. }

Gracias por la información, pero yo decía listeners de escucha.

Es decir tengo el servidor xmpp, y a su vez necesito un método que escuche los paquetes de entrada y salida (ya lo solucioné, fallo tonto de la sala ;) )

y me pregunto si esas clases de Linstener tienen algun thread.

Recuerdo que trabajando en una api de android tenía un run simple que ese run estaba lleno de listeners, según lo que vi, ese run se tendría que terminar al instante pero seguía su curso eso me dio en que pensar. por eso pregunte si un listener que escucha (puerto, conexión, sala) tiene algún run, creo o alguna recursión.

Se que los awt, como son los botones y eso que tienen listeners básicos, no necesitan mucha cosa.

Al igual me especifiqué mal en la pregunta, mil perdones.

En eclipse no puedes , pero en netbeans puedes ver todo el código fuente del jar escrito en java.

Yo uso la librería "smack"

ejemplo :
org.jivesoftware.smack.ChatManagerListener
org.jivesoftware.smack.MessageListener;

pero los listeners de mensajerías tienen algún run ??
  #4 (permalink)  
Antiguo 31/01/2014, 06:01
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 15 años, 5 meses
Puntos: 13
Respuesta: Duda acerca de Threads

No conozco eso en particular, pero seguramente, entonces tiene un bucle dentro de un thread aparte para no congelar el programa y poder escuchar, pero estoy usando el sientido común nomás, no conozco en profundidad esa librería...
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy

Etiquetas: acerca, clase, programa, threads
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 21:59.