gpt4 book ai didi

spring - 在 Spring 管理由一个 Controller 的不同实例创建的线程

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

我写了一个 Controller 来处理视频上传。对我来说困难的部分是将视频类型转换为 mp4 和 webm。我选择在我的 Controller 中新建一个线程,该线程将新建一个进程,这是一个名为“ffmpeg”的视频转换软件。

问题是这个线程会占用过多的资源(至少25%的CPU使用率)。所以我想我必须让这些由不同 Controller 实例创建的线程在共享队列中执行。让这些线程同时执行是很糟糕的。

Spring中的taskExecutor似乎只能管理一个 Controller 实例创建的线程。有没有办法管理由一个 Controller 类但不同实例创建的线程之间的线程?它似乎是一个公共(public)或共享线程池..

最佳答案

我不确切知道您的项目是如何设置的,但这就是我的意思,如果它有意义的话。

@Controller
@RequestMapping(value = "/convert")
public class UploadController {
ExecutorService threadPool = Executors.newFixedThreadPool(2);

@RequestMapping(method = RequestMethod.GET)
public ModelAndView processVideoConvert() throws InterruptedException {

final ModelAndView modelAndView = new ModelAndView("convert");

threadPool.submit(new Runnable() {
@Override
public void run() {
//first conversion
}
});

threadPool.submit(new Runnable() {
@Override
public void run() {
//second conversion
}
});

threadPool.shutdown();
//threadPool.awaitTermination(500L, TimeUnit.MILLISECONDS);
return modelAndView;
}
}

关于spring - 在 Spring 管理由一个 Controller 的不同实例创建的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21110592/

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