【问题标题】:Repeat an action every 2 seconds in java [duplicate]在java中每2秒重复一个动作[重复]
【发布时间】:2014-08-13 21:45:58
【问题描述】:

我必须每 2 秒重复一次我的部分代码,我该怎么做?不要告诉我使用 try { Thread.sleep(millisecondi); } catch (Exception e) {}

因为冻结应用程序

【问题讨论】:

  • 如果它“冻结了应用程序”,那么它可能是 Swing/AWT 代码试图在 EDT 上使用 Thread.sleep。确保包含适当的上下文 .. 和 search first.

标签: java timer delay


【解决方案1】:

如果您的应用程序要保持响应,您需要在另一个线程中执行此操作。或者你可以简单地创建一个timerschedule 它。

当你告诉它睡觉时,无论你在哪个线程中 - 都会无可挑剔地这样做......

类似这样的:

Timer timer = new Timer();
TimerTask myTask = new TimerTask() {
    @Override
    public void run() {
        // whatever you need to do every 2 seconds
    }
};

timer.schedule(myTask, 2000, 2000);

【讨论】:

  • 我必须用这段代码刷新浏览器 browser.refresh();但是当有很多错误时:线程“Timer-1”中的异常 org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:4361) at org.eclipse。 swt.SWT.error(SWT.java:4276) at org.eclipse.swt.SWT.error(SWT.java:4247) at org.eclipse.swt.widgets.Widget.error(Widget.java:468) at org .eclipse.swt.widgets.Widget.checkWidget(Widget.java:359)
  • @user3850946 首先,知道您尝试在 SWT 中执行此操作会非常有用。其次,您需要对 SWT 中的货币进行一些阅读。 SWT 会猛烈地阻止您从除事件调度线程之外的任何线程访问 UI
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
相关资源
最近更新 更多