如果使用以下代码,则在main中
Timer timer = new Timer(200, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("boo");
}
});
timer.start();
Thread.sleep(3000);boo将像预期的那样每200毫秒打印一次。
而
Timer timer = new Timer(200, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("boo");
}
});
timer.start();不会输出任何内容!
发布于 2012-02-06 03:44:38
假设您显示的代码是main()格式的。当main()返回时,程序在计时器线程有机会运行之前退出。休眠使JVM有足够的时间创建另一个线程,然后允许JVM继续运行。
发布于 2012-02-06 03:44:56
会不会是Thread.sleep在main线程上,而在第二种情况下没有输出任何东西的原因是main线程消失,程序退出?
发布于 2012-02-06 03:48:04
这是完整的程序吗(这是main方法中唯一的代码)吗?如果是,那么在第二种情况下,程序在计时器停止之前结束,所以它不会打印任何东西,因为程序几乎立即结束。
https://stackoverflow.com/questions/9152350
复制相似问题