gpt4 book ai didi

java - 并行执行相同的@Sceduled 方法

转载 作者:行者123 更新时间:2023-11-30 10:38:55 25 4
gpt4 key购买 nike

我有一个用@scheduled 注释的方法。这是一个相当长的运行方法。我需要使用线程池并行运行相同的方法。是否可以?代码是:

@Scheduled(fixedRate=100)
public void run() {
Job job = QUEUE.take();
job.run(); //Takes a long time
}

QUEUE 有很多作业,我想使用 Spring 的 Scheduled 注释并行运行它们。

最佳答案

我认为您可以通过使用 spring 的“@Async”或另一种您可以创建自己的线程池来完成作业的方法,将 Job.run 方法更改为异步方法。

/**
* Created by roman.luo on 2016/9/14.
*/
@Component
@Scope("prototype")
public class JobDelegate implements Job {

private Job job;

public JobDelegate(Job job) {
this.job = job;
}

@Async
public void run(){
job.run();
}
}

/**
* Created by roman.luo on 2016/9/14.
*/
@Component
public class Sceduled extends ApplicationObjectSupport{

@Scheduled(fixedRate = 100)
public void run(){
Job job = QUEUE.take();
Job jobDelegate = getApplicationContext().getBean(JobDelegate.class,job);
jobDelegate.run();
}

}

记得配置spring xml文件:

<task:executor id="myexecutor" pool-size="5"  />  
<task:annotation-driven executor="myexecutor"/>

关于java - 并行执行相同的@Sceduled 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39482616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com