当前位置: 首页 > 知识库问答 >
问题:

Spring-让TaskExecutor和TaskScheduler由同一个线程池支持

诸葛康胜
2023-03-14
@Bean
public TaskScheduler taskScheduler() {
    ThreadPoolTaskScheduler s = new ThreadPoolTaskScheduler();

    s.setThreadNamePrefix("Task-Scheduler-");
    s.setPoolSize(10);
    s.setRemoveOnCancelPolicy(true);

    return s;
}

@Bean
public TaskExecutor taskExecutor() {
    ThreadPoolTaskExecutor e = new ThreadPoolTaskExecutor();

    e.setThreadNamePrefix("Task-Executor-");
    e.setMaxPoolSize(10);
    e.setCorePoolSize(10);

    return e;
}

共有1个答案

彭硕
2023-03-14

您不能通过使用这两个类来做到这一点,因为它们是依赖于内部池的实现。

但是,您可以实现自己的TaskExecutorTaskScheduler类,它们使用共享线程池。

不过请注意,少量空闲线程不会对性能产生太大影响,所以除非您知道拥有两个池是一个主要的性能瓶颈,否则我不会浪费时间。

 类似资料:
  • 问题内容: 我试图了解如何在使用Spring进行事务管理的Java应用程序中实现线程。我已经在Spring文档中找到TaskExecutor部分,并且ThreadPoolTask​​Executor看起来很适合我的需求。 ThreadPoolTask​​Executor 该实现只能在Java 5环境中使用,也是该环境中最常用的一种。它公开了用于配置java.util.concurrent.Thre

  • 主要内容:一、MySql中的线程,二、主要方式,三、源码流程,四、总结一、MySql中的线程 在mysql中,每一个连接上来,就会分配给一个相关的THD数据类。在前面的分析中可以看到,连接器(Connectors)连接到的直接就是连接池,在连接池的线程处理中分为三部分,即一对一(一个连接对应一个线程),多对一(多个连接对应一个线程)和线程池(多对多)。 线程池和线程可以针对不同的具体场景来处理具体的事务,这样既兼顾了效率又提高了适应性,对于新手来说,这就是设计的一个

  • Libevent本身不是多线程安全的,在多核的时代,如何能充分利用CPU的能力呢,这一节来说说如何在多线程环境中使用libevent,跟源代码并没有太大的关系,纯粹是使用上的技巧。 1 错误使用示例 在多核的CPU上只使用一个线程始终是对不起CPU的处理能力啊,那好吧,那就多创建几个线程,比如下面的简单服务器场景。 1 主线程创建工作线程1; 2 接着主线程监听在端口上,等待新的连接; 3 在线程

  • 问题 你创建一个工作者线程池,用来响应客户端请求或执行其他的工作。 解决方案 concurrent.futures 函数库有一个 ThreadPoolExecutor 类可以被用来完成这个任务。 下面是一个简单的TCP服务器,使用了一个线程池来响应客户端: from socket import AF_INET, SOCK_STREAM, socket from concurrent.futures

  • 我使用JPA和Hibernate进行持久化,并有Spring Boot的一些自动配置帮助。我正在运行一个JUnit测试,它在JPA Repository中保存了一些记录。然后它实例化一个新的Spring托管线程,并由ThreadPoolTaskExecutor运行。该线程将尝试获取先前添加的记录,但没有成功。 以下是测试和可运行线程的相关代码: 因此,在我插入了rtmpSourceSample对象

  • 我对连接池的理解是;如果connectionstring完全相同,那么我们重用该连接,而不是建立新的连接。 我的问题是,我正在为并行处理创建许多线程。在这个“虚拟”程序中,我创建了500个线程,并让线程池函数处理这些线程。 步骤是: > < li> 每个线程在SQL中创建一个更新表。(说明更新的时间戳) 然后线程Hibernate1到10秒(随机)。 最后,线程在 SQL 中进行另一次更新(说明结