需要通过XML在java中创建可配置的计时器任务

时间:2016-10-17 12:09:48

标签: java xml multithreading timertask

我有一个多线程套接字服务器应用程序。我的要求是每隔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不是一个选项,我必须只使用线程。任何建议。

1 个答案:

答案 0 :(得分:0)

使用Spring核心并使用:

 @Scheduled(<Options>)

它很容易你可以制作一个罐子并运行它将运行完美。所以不需要使用线程,线程总是难以管理

http://howtodoinjava.com/spring/spring-core/4-ways-to-schedule-tasks-in-spring-3-scheduled-example/