HIlos: Tares en segundo plano
Ayudaaaaaa :( .
el la aplicacion que estoy desarrollando verifica las conecciones e implemente hilos para que el programa no se bloquera pero tengo problemas por que el ping me responde falso antes de que lo termine espero me puedan ayudar.
******************************Este es el hilo
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class Ping extends Test implements Runnable {
public boolean res1;
public Ping(int ip) throws UnknownHostException, IOException, InterruptedException{
System.out.println("Realizando Ping a la direccion 192.168.0."+ip);
InetAddress in = InetAddress.getByName("192.168.0." + ip);
System.out.println(in.isReachable(ip));
}
public void run() {}
}
***************************este el que llama al Hilo
package Hilos;
import java.io.IOException;
import java.net.UnknownHostException;
public class Test {
public static void main(String args[]) throws UnknownHostException, IOException, InterruptedException{
for (int i = 1; i < 10; i++) {
Thread hr = new Thread(new Ping(i));
hr.start();
}
}
}
- Inicie sesión o regístrese para enviar comentarios
run() vacío
El método run() no hace nada; el ping lo haces en el constructor de la clase Ping. Por lo tanto todos los pings se hacen en el hilo principal, en vez de cada ping en su propio hilo.
Sigo en las mismas :(
ya lo e cambiado al metodo run() y sigue haciendo lo mismo;
public int ip1;
public Ping(int ip) {
ip1 = ip;
run();
}
public void run() {
System.out.println("Realizando Ping a la direccion 192.168.0." + ip1);
InetAddress in = null;
try {
in = InetAddress.getByName("192.168.0." + ip1);
} catch (UnknownHostException ex) {
Logger.getLogger(Ping.class.getName()).log(Level.SEVERE, null, ex);
}
try {
System.out.println(in.isReachable(ip1));
} catch (IOException ex) {
Logger.getLogger(Ping.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
println()
El método println() me parece que hace un bloqueo sobre el System.out por lo que ahí se sincronizan los hilos (sólo uno a la vez puede imprimir eso en pantalla). Lo demás ya se debe hacer en distintos hilos (10 hilos, uno para cada ping). No entiendo cuál es el problema.
Hilos. Prueba esto...
Hola pruebas esto. Me dices como te fue ok :)
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Runnable.html
http://java.sun.com/j2se/1.5.0/docs/api/java/net/InetAddress.html (checa tu 'isReachable')
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html (sutil diferencia entre 'run()' y 'start()')
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
*
* @author Rodrigo Salado Anaya.
*/
public class Main {
public static void main(String[] args) {
String ip = "192.100.11.";
for (int i = 0; i <= 255; i++) {
new Ping(ip + i);
}
}
}
class Ping implements Runnable {
private String ip;
private Thread hilo;
public Ping(String ip) {
this.ip = ip;
hilo = new Thread(this);
hilo.setName("hiloPing-" + ip); // Puedes hacer un 'Profile' por ejemplo con NetBeans y ver como se comporto tu hilo.
hilo.start();
}
public void run() {
System.out.println("Buscando: " + ip);
InetAddress in = null;
try {
in = InetAddress.getByName(ip);
int timeOut = 15;
if (in.isReachable(timeOut)) {
System.out.println("Encontrada: " + ip + " :: [Ok]");
} else {
System.out.println("No encontrada: " + ip + " [Error]");
}
} catch (UnknownHostException ex) {
} catch (IOException ex) {
}
}
}
Nota: Y ten cuidado usando run() y start(), uno lo coloca en el la fila del despachador y otro no.
Que buena solucion
Es precisamente lo que yo queria. Muchas gracias por su ayuda. Lo estudiare bien. pero me surge una duda. la clase que hace ping la mando llamar desde un formulario y quiero plasmarla en etiquetas. la clase ping hereda lo del formulario y al llamar el metodo en que cambia las etiquetas no hace nada. completa el metodo correctamente pero no cambia las etiquetas. y si mando llamar el metodo desde la misma clase se ejecuta correctamente.
Swing?
Si lo estás haciendo con Swing, lee esto.
muy buen tutorial.
no había checado el tutoría, y esta buenisimo...
Muchas Gracias
Les Agradesco la ayudad que me han brindado esto de java si que es algo inmenso y sin personas como ustedes seria mas dificil aprenderlo xD Gracias ezamundio, gracias rodrigo.
Otraves Yo :D
me encontre con un buen tutorial en español sobre la concurrencia en java swing y todo me funciona muy bien solo que me surge una duda cuando corro el programa si hace el proceso sin bloquearme la aplicacion pero hace el proceso hilo por hilo y si lo pruevo en una maquina con java 1.5 me va perfecto respuesta de todas las maquinas en 20 segundos.