Diminuir a taxa de amostragem em um evento de mouse

pessoal, estou fazer uma aplicacao remota q vai fazer o mouse mexer, o problema é q o meu programa java esta enviando mta informacao, preciso fazer com q ele envie menos pois o lado que recebe esta meio lento, por isso preciso mudar a parte q envia mensagens para melhorar pois o recebimento ja esta tudo no basico, segue meu codigo que coloquei em um jframe

this.addMouseMotionListener(

                new MouseAdapter() {
                    public void mouseMoved(MouseEvent e){
         
                        if(!ativado){
                            if(lendoMouse!=true){
                                lendoMouse=false;
                                
                                msgMouseMove.setId(-556);
                                msgMouseMove.setTamanho(16);
                                msgMouseMove.setPosicX(e.getXOnScreen()+50);
                                msgMouseMove.setPosicY(e.getYOnScreen()-20);

                                try {
                                    socket.sendMsg(msgMouseMove);
                                    /*try {
                                        Thread.sleep(10);//60

                                    } catch (InterruptedException ex) {
                                        Logger.getLogger(JanelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
                                    }*/

                                } catch (UnsupportedEncodingException ex) {

                                    Logger.getLogger(JanelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);

                                }
                                
                                
                                lendoMouse=false;
                            }
                        }
                
                    }
                }
            );

a parte com o sleep ajudou mto, e com apenas 10 como parametro ja deixa tudo certinho, porem nao posso utilizar o sleep

alguem tem alguma ideia?

vlw

Descarte mensagens caso elas tenham chegado a menos de x milisegundos.
Use o método System.currentTimeMillis() para marcar a hora que a mensagem chega.

Eu considero q a melhor alternativa seria vc ter uma variavel que guarde a a hora do ultimo comando enviado

e ao chamar o metodo send pegasse a hora atual subtraia pela ultima e checaria quantos segundos ja se passaram para poder enviar ou apenas descartar a mensagem

isso nao seria possivel pois do outro lado estou usando c++, vc teria alguma ideia para que eu possa fazer nesse trexo citado acima?
talves algum tipo de semaforo?

vlw

como assim nao daria pra fazer esse codigo teria q ta no java antes de vc envia checasse o tempo passado desde a utima mensagem enviada

acho que a solução do leonardobhbr deve servir pro seu caso

E o que que isso tem a ver? O C++ só vai ver menos mensagens de mouse chegando. Não vai mudar absolutamente nada.

O código vai ser mais ou menos assim:

this.addMouseMotionListener(
   new MouseAdapter() {
      private long ultimoEvento= 0;

      public void mouseMoved(MouseEvent e){        
         if(ativado){
            return;
         }

         //Cai fora se o último evento chegou a mais de 0.5s
         long tempo = System.currentTimeMillis();
         if (tempo - ultimoEvento <= 500) { 
            return;
         }

         ultimoEvento= tempo;
                                
         msgMouseMove.setId(-556);
         msgMouseMove.setTamanho(16);
         msgMouseMove.setPosicX(e.getXOnScreen()+50);
         msgMouseMove.setPosicY(e.getYOnScreen()-20);

         try {
            socket.sendMsg(msgMouseMove);
         } catch (UnsupportedEncodingException ex) {
            Logger.getLogger(JanelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
         }                                
      }
   }
}                              

Vlw pessoal

funcionou perfeitamente a solucao do ViniGodoy

flw