我正在使用spring-boot
和@schedule
注释来执行一些任务。
原因:下面的类不是并行地执行作业,而是一个接一个地执行作业。可能默认情况下只配置了一个线程执行器?
@Service
public class ZipFileTesterAsync {
@Scheduled(fixedDelay = 60000, initialDelay = 500)
public void run() throws Exception {
System.out.println("import 1");
TimeUnit.MINUTES.sleep(1);
System.out.println("import 1 finished");
}
@Scheduled(fixedDelay = 60000, initialDelay = 1000)
public void run2() throws Exception {
System.out.println("import 2");
TimeUnit.MINUTES.sleep(1);
}
}
结果:第二个作业在第一个作业完成后执行。
是的,默认情况下,所有@schedule
方法共享一个线程。可以通过定义以下@configuration
来覆盖此行为:
@Configuration
public class SchedulingConfigurerConfiguration implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();
taskScheduler.setPoolSize(100);
taskScheduler.initialize();
taskRegistrar.setTaskScheduler(taskScheduler);
}
}
此示例确保所有@schedule
方法共享大小为100的线程池。
问题内容: 我正在使用t和注释执行一些任务。 如何确定spring-boot中预设任务的默认池大小是多少? 原因:以下类不是并行执行作业,而是一个接一个地执行。也许默认情况下仅配置了一个线程执行程序? 结果:在第一个作业完成后执行第二个作业。 问题答案: 是的,默认情况下,所有方法共享一个线程。通过定义如下这样可以覆盖此行为: 本示例确保所有方法共享大小为100的线程池。
当容器加载时,spring boot HikariCP提供的默认连接池大小是多少? 当然,我使用下面的属性来设置最大cp大小,但是我想知道如果我们在application.properties文件中没有给出任何数字,默认的cp大小是多少。 如果我给出application.properties最大池大小为100,而我只使用20,这会影响我的应用程序性能吗?
问题内容: 由于以下原因,我知道如何设置堆栈大小: 如何在Node.js中增加最大调用堆栈大小 但是,默认大小是多少?(即,我如何获得的PHP等效项) 问题答案: 简单的答案是,默认堆栈大小为492 KB(32位)和984KB(64位)。 如soyuka所评论,请尝试以下操作: 要么
我使用SpringBoot(V2.3.0.Release)、JPA和Hibernate(带有MySQL数据库)。总的来说,我需要努力提高表演。 是否需要手动配置(同时添加依赖项)连接池?
问题内容: Java SE 6中Sun的JVM的默认最大堆大小是多少(即等效于设置-Xmx)? 貌似对Java SE 5与服务器级计算机,它的 小于物理内存的1/4或1GB。 额外的问题:对于IBM的JVM,您可以提出要求 您可以类似地询问Sun的JVM吗? 编辑 : 我使用Runtime.getRuntime()。maxMemory来确认min(物理内存/ 4,1G),这在Sun文档中已引用。
在Spring Boot应用程序中或一般情况下,tomcat是否配置了默认线程池? 如果配置了线程池,当容器从池中挑选线程时,特定的线程将服务于许多请求?