【发布时间】:2015-03-08 17:55:07
【问题描述】:
除了schedule方法的构造函数中的延迟选项外,这两种方法的主要区别是什么,这两种方法中性能最佳或线程-安全执行??
Timer temporizer = new Timer();
TimerTask task = new TimerTask(){
@Override
public void run() {
// iterate something
}
};
temporizer.schedule (task,delay,interval);
还是简单的
while (true){
// iterate something
try {
Thread.sleep(interval);
} catch (InterruptedException ex) {...}
}
提前致谢:)
【问题讨论】:
-
可能不是您当前关心的问题,但请不要像这样忽略
InterruptedExceptions。它们不仅仅是我们应该尝试尽快摆脱的烦恼,而是取消线程的重要机制。如果一个被抛出,你的线程应该清理并退出自己。 -
@5gon12eder 你这么说是因为
catch (InterruptedException ex) { }?? -
是的,这不是处理该异常的好方法。
-
@5gon12eder 在问题中,我这样写是为了简化代码,显然应该处理这个异常:)
-
好吧,如果你已经知道了,那么请忽略我的评论。我之所以提到它,是因为我看到许多初学者 Java 程序员经常忽略异常或只是打印堆栈跟踪并继续前进(因为这恰好是 Eclipse 自动生成的内容),这是非常糟糕的做法。
标签: java multithreading performance thread-safety