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。求大神帮忙看看是哪里写错了