Código:
Este código actual lo que hace es cada incremento sucede por cada receive que se recibe, lo que quiero es que el contador siga de corrido, es decir, los incrementos no se detengan por el receive, pero el receive esté al pendiente y despliegue el mensaje recibido. Espero haberme explicado, saludos public class Client extends Thread { private boolean vivo; private ClientGUI clienteGUI; int puerto = 3000; byte[] buffer = new byte[10]; DatagramPacket dato = new DatagramPacket(buffer, buffer.length);// Un DatagramPacket para recibir los mensajes. // private int h_p; private long tiempoinicial; private float d2p; private int tiempointerrupcion; private int n; private int tipo; public Client(ClientGUI cliente, MicroKernel nucleo, int id,long tiempoinicial,int h,int d,float p,int tipoReloj) { this.clienteGUI = cliente; this.nucleo = nucleo; this.id = id; this.tipo=tipoReloj; vivo = true; if(tipoReloj==1){ h_p=h; } else if(tipoReloj ==2){ h_p=h-(int)(h*p); } else if (tipoReloj == 3){ h_p=h+(int)(h*p); } n=1000/h; d2p=d/(2*p); this.tiempoinicial=tiempoinicial; tiempointerrupcion = 1000/h_p; start(); } public void stopThread() { vivo = false; } public void setInicio(int hi) { tiempoinicial = hi; } public synchronized void receive() { try{ InetAddress direccion = InetAddress.getLocalHost();// direccion ip del interfaz de red DatagramSocket socket = new DatagramSocket(puerto, direccion); // Se recibe un dato y se escribe en pantalla. socket.setBroadcast(true); socket.receive(dato); socket.disconnect(); clienteGUI.printMessage("Recibido dato de "+ dato.getAddress().getHostName() + " : "); // Conversion de los bytes a String String msg = new String(dato.getData()); clienteGUI.printMessage(msg); socket.close(); }catch (Exception e) {e.printStackTrace();} } public void run() { while(vivo){ try{ sleep(tiempointerrupcion); tiempoinicial += n; clienteGUI.tiempoActual(String.valueOf(tiempoinicial)); receive(); }catch (InterruptedException e ){e.getMessage();} catch (Exception e) {e.printStackTrace();} } } }