春季启动ThreadPoolTask​​Executor性能损失

时间:2019-04-04 03:45:03

标签: java spring spring-boot

最近一个小时,我一直在寻找一个问题,但找不到任何东西。

我有一个ThreadPoolTaskExecutor,负责在单独的线程中运行神经网络。

当前,我有一个POST映射,该映射接受一个配置,然后将其传递到ThreadPoolTaskExecutor,然后创建并运行网络。

如果我从Runnable映射中将ThreadPoolTaskExecutor添加到POST,则执行时间大约需要7000毫秒才能完成。

如果我在没有服务器的情况下将Runnable添加到ThreadPoolTaskExecutor,则大约需要3000毫秒才能完成执行。

我认为这可能是服务器的开销,但是,我决定尝试启动服务器,然后运行网络。令我惊讶的是,时间大约为3000毫秒,这意味着服务器不会造成任何开销。

SpringApplication app = new SpringApplication(Application.class);
app.setBannerMode(Banner.Mode.OFF);
app.run(args);
NetworkConfig cfg = <int config>;
new ThreadPoolConfiguration().taskExecutor().execute(() -> new Network(cfg).fit());

总之,为什么从Spring-boot应用程序外部和main方法内部执行任务时,性能会有如此大的差异?

0 个答案:

没有答案