java定时器的问题,在一个新的线程中使用

我在用主线程来刷新屏幕,新开了一个线程来在刷新显示时间的“表”,这个表是一个label来模拟的。display.timerExec(1000,runnable);但是执行... 我在用主线程来刷新屏幕,新开了一个线程来在刷新显示时间的“表”,这个表是一个label来模拟的。
display.timerExec(1000, runnable);
但是执行的时候却不是每1000ms执行一次,这是怎么回事?
展开
 我来答
匿名用户
2013-10-29
展开全部
相信你的意思是 runnable 为何只执行一次而不是周期性地执行。

你看看 timerExec 方法的文档:
public void timerExec(int milliseconds, Runnable runnable)
Causes the run() method of the runnable to be invoked by the user-interface thread after the specified number of milliseconds have elapsed.

没说是周期性地执行 runnable。

你要周期性执行的话,最直接的方法是在你的 runnable 的 run 方法尾部调用 timerExec。比如:

import org.eclipse.swt.widgets.*;

class C {
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);

final int 周期 = 1000;
display.timerExec(周期, new Runnable() {
public void run() {
shell.setText("" + new java.util.Date());
display.timerExec(周期, this);
}
});

shell.open();
while ( ! shell.isDisposed())
if ( ! display.readAndDispatch())
display.sleep();
display.dispose();
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式