java定时器的问题,在一个新的线程中使用
我在用主线程来刷新屏幕,新开了一个线程来在刷新显示时间的“表”,这个表是一个label来模拟的。display.timerExec(1000,runnable);但是执行...
我在用主线程来刷新屏幕,新开了一个线程来在刷新显示时间的“表”,这个表是一个label来模拟的。
display.timerExec(1000, runnable);
但是执行的时候却不是每1000ms执行一次,这是怎么回事? 展开
display.timerExec(1000, runnable);
但是执行的时候却不是每1000ms执行一次,这是怎么回事? 展开
1个回答
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();
}
}
你看看 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();
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询