我有一个多线程套接字服务器应用程序。我的要求是每隔X分钟更新一个表,我现在通过运行并行线程来完成。持续时间(以分钟为单位)存储在XML文件中。但是并行运行的线程在堆内存上占用了太多空间,最终导致OutOfMemoryError。 以下是更新的代码。
public class MyThread extends Thread
{
public void run()
{
while(true)
{
int TOmin=0;
int timeout=0;
try {
TOmin=Integer.parseInt(DatabaseManager.getSMSTimeout().trim()); //the method reads from a XML file.
timeout=TOmin*60*1000;
Thread.sleep(timeout);
DataManager.callstoredprocedure();
} catch (NumberFormatException e) {
e.printStackTrace();
LogManager.logException(Arrays.toString(e.getStackTrace()));
} catch (InterruptedException e) {
e.printStackTrace();
LogManager.logException(Arrays.toString(e.getStackTrace()));
}
}
}
}
我查看了Scheduled Executor Service,但无法从XML文件配置延迟参数。请建议一种方法来完成任务而不会导致内存泄漏。
EDIT-1 - 使用spring core不是一个选项,我必须只使用线程。任何建议。
答案 0 :(得分:0)
使用Spring核心并使用:
@Scheduled(<Options>)
它很容易你可以制作一个罐子并运行它将运行完美。所以不需要使用线程,线程总是难以管理
http://howtodoinjava.com/spring/spring-core/4-ways-to-schedule-tasks-in-spring-3-scheduled-example/