看下面代码,如果没有关闭mTime,那就会死循环了,线程数量将超过系统限制,也可能导致系统崩溃哦,曾经我们系统就遇到这样的问题,用到太多timer导致
比如会提示:[WARN ] Thread table can't grow past 16383 threads.
mTime = new Timer();
mTime.schedule(new TimerTask() {
@Override
public void run() {
try{
// todo;
}catch(Exception e){
e.printStackTrace();
}
}
}, 0,1000);
所以要加入线程池同时用Quartz定时器或者创建一个TimerTask实例,不要一直新建实例。
以下是正确的例子:
import java.util.Timer;
import java.util.TimerTask;
public class Main {
Timer timer;
public Main(int seconds) {
timer = new Timer();
timer.schedule(new ToDoTask(), seconds * 1000);
}
class ToDoTask extends TimerTask {
public void run() {
System.out.println("working");
timer.cancel();
}
}
public static void main(String args[]) {
new Main(5);
}
}