在spring中引入线程池

来源:互联网 发布:linux 定时 同步 ntp 编辑:程序博客网 时间:2024/06/10 03:22

在spring.xml 文件中配置:

<!--  线程-->    <bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">          <!-- 核心线程数 -->               <property name="corePoolSize" value="2" />          <!-- 最大线程数 -->            <property name="maxPoolSize" value="5" />          <!-- 队列最大长度 -->          <property name="queueCapacity" value="10" />          <!-- 线程池维护线程所允许的空闲时间,默认为60s -->          <property name="keepAliveSeconds" value="200" />      </bean>  

然后在要使用的服务中注入:

     /**   * 引入线程   */  @Resource  private TaskExecutor taskExecutor;

在方法中直接使用即可:

     //获取到application        ServletContext application = request.getServletContext();        //获取application中的计算标量值,规定当runCondition的值为runing时        //标识上次计算时间还没结束,不再进行计算,为其他值时进行计算        String runCondition = (String) application.getAttribute("runCondition");        // 判断是否完成计算,在全局变量application中设置一个值        if(runCondition!=null){            if (runCondition.equals("runing")) {                return;            }        }        //获取线程执行时间计算        taskExecutor.execute(new Runnable() {            @Override            public void run() {                application.setAttribute("runCondition", "runing");                System.out.println("开始计算任务超时时间");                // 获取所有流程,计算时间                mProcessInstanceService.createProcessInstanceQuery().list().forEach((a) -> {                    mProcessInstanceService.calcTimeout(a.getId(), "*");                });                application.setAttribute("runCondition", "end");            }        });
原创粉丝点击