当前位置: 首页 > 知识库问答 >
问题:

Spring调度器无法正常工作

卫增
2023-03-14
@Component
public class ExampleScheduler {

    @Autowired
    ExampleService exampleService;

    @Scheduled(fixedDelay = 1000)
    private void run(){
        exampleService.doSomething();
    }    
}

计划程序的设置:

<task:annotation-driven executor="executor" scheduler="scheduler"/>
<task:executor id="executor" pool-size="20"/>
<task:scheduler id="scheduler" pool-size="40"/>

和@enableScheduling在类中使用@configuration。

问题是fixedDelay正确工作两次,然后在迭代之间暂停1.5分钟。我在计划注释中尝试过fixedRate或cron,但都没有帮助。

方法在调度任务中的工作时间为100ms,项目有足够的内存,但调度程序的工作速度很慢。

共有1个答案

周枫涟
2023-03-14

fixedDelay参数的设计使下一个任务的计时器在上一个任务完成后启动。也就是说,如果你的任务运行了5秒,那么它将有效地重复1.5秒。

附言。因此,fixedDelay最好能避免多个进程试图击败对方并导致争用情况。例如,您有一个更新某些值的计划任务,这个过程可能需要.1秒到5秒的时间,但您希望每秒刷新一次。您将使用fixedDelay来避免多个线程试图同时完成相同的任务,而使用旧数据的任务最后完成,因此可能会从较新的任务中删除正确的值。

fixedRate从每个进程开始测量。直截了当地说:

@Scheduled(fixedRate=500)
@Scheduled(zone = "EST", cron = "* * * * * *") 
 类似资料:
  • 问题内容: 我有一个课程,如何让@JsonIgnore工作。即使将注释放在此处,它也不会影响输出。我正在使用杰克逊。 这是我的Controller方法: 这是我的servlet-context.xml: 问题答案: 我终于找到了解决方案。我将导入声明从 至 基本上,您必须确保在所有地方都使用相同的类。

  • } 这是我的配置。但似乎/用户/无法被任何人访问。 每当我输入“. hasRole(“RoleName”)”时,它只会拒绝该角色的访问。我得到一个{“时间戳”:1526671066818,“状态”: 403,“错误”:“禁止”,“消息”:“拒绝访问”,“路径”:“/用户”} 从那。 我想要的是,一些请求只允许“USER”访问,例如:“/entrysheet”,“/datasheet”等,而“ADM

  • 问题内容: 我正在尝试使用带注释的TX Spring支持。 应用程序上下文XML: 实际代码: 调用代码: 它给出了 FALSE。 我究竟做错了什么? 问题答案: 您应该在配置中添加它 在您的RepositoryClass上添加一个接口 这在你的测试课中 请参阅本教程。

  • 太长别读:@Depth(value=-1)抛出空指针,忽略1以上的其他值 在我的Spring Boot with Neo4j项目中,我有3个简单的实体与关系: 我创建了一个简单的图,如下所示: 使用以下存储库: 以及以下代码: 要检索与上图所示相同的图表(取自实际的neo4j仪表板),我执行,其中包含,然后打印保存的度量和检索的度量: 无论深度的值如何,我都无法获取包含所有子节点的Metric节点

  • 实际上,我对spring代理的行为感到困惑。我想我知道j2ee、cglib和AspectJ的代理机制之间的主要区别。我在配置类中启用了aspectj自动代理,并且aspectj包含在类路径中。 我的配置 最后,我发现是我的服务上的接口导致了这种行为。似乎spring决定在我的服务实现任何接口时使用j2ee代理。如果我移除它们,它就会起作用。 失败: 好的: ...强制spring不使用j2ee代理

  • 我在列表视图中使用微调器,但它在列表视图中不能正常工作。我能够在微调器中显示所需的值,但无法从微调器中获取选定的项目值。 它没有打印任何东西。布局: