java定时器的问题,在一个新的线程中使用
发布网友
发布时间:2022-04-29 16:53
我来回答
共3个回答
热心网友
时间:2023-10-20 19:45
相信你的意思是 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();
}
}
参考资料:http://www.java2s.com/Tutorial/Java/0280__SWT/Createonerepeatingtimer.htm
热心网友
时间:2023-10-20 19:46
让控制时间的线程在while循环里睡眠1000ms
参考资料:http://hi.baidu.com/payton_lau/blog/item/66ee0e0011e001087bec2c8a.html
热心网友
时间:2023-10-20 19:45
相信你的意思是 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();
}
}
参考资料:http://www.java2s.com/Tutorial/Java/0280__SWT/Createonerepeatingtimer.htm
热心网友
时间:2023-10-20 19:46
让控制时间的线程在while循环里睡眠1000ms
参考资料:http://hi.baidu.com/payton_lau/blog/item/66ee0e0011e001087bec2c8a.html
热心网友
时间:2023-10-20 19:46
windows系统不可能那么精确,应该会1000多一点,累积起来就差的越来月多了,可以用quartz来定时。
热心网友
时间:2023-10-20 19:45
相信你的意思是 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();
}
}
参考资料:http://www.java2s.com/Tutorial/Java/0280__SWT/Createonerepeatingtimer.htm
热心网友
时间:2023-10-20 19:46
windows系统不可能那么精确,应该会1000多一点,累积起来就差的越来月多了,可以用quartz来定时。
热心网友
时间:2023-10-20 19:46
让控制时间的线程在while循环里睡眠1000ms
参考资料:http://hi.baidu.com/payton_lau/blog/item/66ee0e0011e001087bec2c8a.html
热心网友
时间:2023-10-20 19:46
windows系统不可能那么精确,应该会1000多一点,累积起来就差的越来月多了,可以用quartz来定时。