首页 > 解决方案 > 上一次提取完成后如何在计时器线程上运行下一次提取?

问题描述

我有一个 java 应用程序。当应用程序启动时,计时器线程开始运行并使用 api 更新应用程序。该线程每分钟触发一次。但是当用户第一次登录时,该程序需要大约 15 分钟才能从应用程序中获取所有记录。

一旦第一次登录中的所有条目都到达,该线程将继续照常工作并保持新记录的出现。

由于用户第一次登录系统的数据量很大,因此数据处理时间为 15 分钟。这意味着它将在 15 分钟内触发 15 次。我已经保护了 Thread 使用 synchronize 关键字工作的方法。我还有其他事情要做。

在上一次 fetch 线程之后,另一个 fetch 运行。

有没有逻辑错误。

我的 Timer 线程代码块如下;

final Timer timer = new Timer("Sikke Timer Task");
    long delay = SikkeConstant.THREAD_DELAY;
    long intervalPeriod = SikkeConstant.INTERVAL_PERIOD; //60sec
    TimerTask task = new TimerTask() {
        @Override
        public void run() {
            /* if (_System.shouldThreadContinueToWork) { */
            try {
                new EchoPostHandler().jsonrpc.methods.syncTx();
            } catch (Exception e) {
                System.out.println("Error on sikke thread : " + e.getMessage());
                e.printStackTrace();
            }
            /* } */
        }
    };
    timer.scheduleAtFixedRate(task, delay, intervalPeriod);

标签: javamultithreadingtimertaskjava-threads

解决方案


推荐阅读