0

我想将 data() 方法更新为每 500 毫秒,但我下面的计时器更新 data() 方法超过 4 或 5 秒。谢谢..

class RemindTask extends TimerTask {
    public void run() {
            try {

                data();

            } catch (UnsupportedCommOperationException ex) {
                Logger.getLogger(test2.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(test2.class.getName()).log(Level.SEVERE, null, ex);
            } catch (TooManyListenersException ex) {
                Logger.getLogger(test2.class.getName()).log(Level.SEVERE, null, ex);
            }

    }

和定时器触发方法是..

 private void okActionPerformed(java.awt.event.ActionEvent evt) {                                   

if(evt.getSource()==ok)
{
    bul=true;
    if(new communication().bul1==false)
    {
    JOptionPane.showMessageDialog(test2,"GPS CONNECTE");

    }
    //System.out.print(bd.get);
   timer = new Timer();
    timer.schedule(new RemindTask(), 500); 

}
4

1 回答 1

1

您使用了错误版本的schedule方法。第二个参数是延迟,而不是间隔。您可以参考JavaDoc了解详细信息。

ScheduledExecutorService优于Timer,以下是代码示例:

ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
ses.scheduleAtFixedRate(new RemindTask(), 0, 500, TimeUnit.MILLISECONDS);

RemindTask应该实现Runnable接口:

class RemindTask implements Runnable {
  public void run() {
  // ...
  }
}

另请阅读JavaDoc

于 2013-04-04T10:53:54.640 回答