根据提供的信息,一种解决方案是在再次调用方法之前启动一个休眠 5 秒的线程,例如:
// init (e.g. with servlet init())
Runner r = new Runner();
Thread t = new Thread(r);
t.start();
// and later (e.g. with servlet destroy())
r.stopRunning();
t.interrupt();
t.join();
而你的 Runner 你只需要更新一点,这样你就可以在一个线程中运行它。
public class Runner implements Runnable
{
List values;
boolean running = true;
public void run()
{
while (running)
{
changeSomeDataA();
changeSomeDataB();
changeSomeDataC();
try {
Thread.sleep(5000);
} catch(InterruptedException e) {
// we do not really need to react here, do we?
}
}
}
}
请注意,您需要将对 Runner 和 Thread 的引用存储在一个不会被意外垃圾收集的对象(如您的 Servlet 实例)中。当然请包装好。