testresultstomorrow 2019-08-20 10:59 采纳率: 0%
浏览 384

求帅哥帮忙.我配置了一个线程池一直注入不进去。求大神帮忙看看

package com.test.test;

import java.util.concurrent.ThreadPoolExecutor;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.core.task.TaskExecutor;

import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

import org.springframework.stereotype.Component;

//@Configuration
@Component
public class ThreadConfig {

//线程池维护线程的最少数量
@Value("${ThreaPool.corePoolSize}")
private Integer corePoolSize;
//允许的空闲时间
@Value("${ThreaPool.keepAliveSeconds}")
private Integer keepAliveSeconds;
//线程池维护线程的最大数量
@Value("${ThreaPool.maxPoolSize}")
private Integer maxPoolSize;
//缓存队列

@Value( "${ThreaPool.queueCapacity}")

private Integer queueCapacity;

@Bean
public TaskExecutor taskExecutor() {
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setCorePoolSize(corePoolSize);
    executor.setKeepAliveSeconds(keepAliveSeconds);
    executor.setMaxPoolSize(maxPoolSize);
    executor.setQueueCapacity(queueCapacity);
    ThreadPoolExecutor.CallerRunsPolicy callerRunsPolicy = 
            new ThreadPoolExecutor.CallerRunsPolicy();
    //对拒绝task的处理策略
    executor.setRejectedExecutionHandler(callerRunsPolicy);
    executor.initialize();
    return executor;
}

}

package com.test.test;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.junit.jupiter.api.Test;

public class b {
    @Resource
    private ThreadConfig es;
    @Test
    public void test1() {
        List<Integer> integers=new ArrayList<>();
        integers.add(1);
        integers.add(2);
        integers.add(3);
        integers.add(4);
        integers.add(5);
        integers.add(6);
        integers.add(7);
        integers.add(8);
        integers.add(9);
        integers.add(10);
        integers.add(11);
        integers.add(12);
        integers.add(13);
        integers.add(14);
        integers.add(15);
        System.out.println(integers);
        System.out.println(es==null);
        List<List<Integer>> lists=averageAssign(integers, 6);
        for (int j = 0; j <lists.size(); j++) {
            List<Integer> lisrrr=lists.get(j);
            System.out.println(es==null);
        if(lisrrr!=null) {
            System.out.println("1");
            es.taskExecutor().execute(new Runnable() {
                @Override
                public void run() {
                    System.out.println("1");

                    try {
                        System.out.println(lisrrr);
    System.err.println(Thread.currentThread().getName());
                        Thread.sleep(3000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();

                    }

                }
            }); 
            }
        }

    }

}


现在运行的时候打印出来的执行到 es.taskExecutor().execute(new Runnable()就是空指针异常,打印System.out.println(es==null); 也是true。求大神帮忙看看是哪里写错了

  • 写回答

2条回答 默认 最新

  • lixiaozhen007 2019-08-20 11:21
    关注

    获取下,IOC容器,看看你得dataSource有没有注入进去,

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 MATLAB动图问题
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名