gpt4 book ai didi

java - 多线程 Spring-boot Controller 方法

转载 作者:行者123 更新时间:2023-12-03 12:46:29 25 4
gpt4 key购买 nike

因此,我的应用程序 (spring-boot) 运行速度非常慢,因为它使用 Selenium 来抓取数据、处理数据并显示在主页中。我遇到了多线程,我认为它可以对我的应用程序有用以使其运行得更快,但是教程似乎显示在带有 main.js 的普通 java 应用程序的设置中。如何在我的 Controller 中多线程这个单一方法?
get.. 的方法都是 selenium 方法。我希望同时运行这 4 行代码

   @Autowired
private WebScrape webscrape;

@RequestMapping(value = "/")
public String printTable(ModelMap model) {
model.addAttribute("alldata", webscrape.getAllData());
model.addAttribute("worldCases", webscrape.getWorlValues().get(0));
model.addAttribute("worldDeaths", webscrape.getWorlValues().get(1));
model.addAttribute("worldPop", webscrape.getWorlValues().get(2));

return "index";
}

最佳答案

对于 RequestMapping 的每个请求,都会创建一个新线程,因此您想要实现的目标已经存在。请看一看:
https://www.oreilly.com/library/view/head-first-servlets/9780596516680/ch04s04.html
如果您出于其他原因仍然想使用多线程,您会发现以下有用:

@SpringBootApplication
@EnableAsync
public class ExampleSpringBootApp {
@Bean
public TaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(2);
executor.setMaxPoolSize(5);
executor.setQueueCapacity(25);
return executor;
}

public static void main(String[] args) {
//some code
}
}
这将为您创建线程池,您可以将其提供给您的任务。
更多信息和指南:
https://spring.io/guides/gs/async-method/
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/task/TaskExecutor.html

关于java - 多线程 Spring-boot Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62944457/

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