在项目中的多线程
MadAcbService类中
private ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(10, Integer.MAX_VALUE, 30, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(500));
//设置默认值
Future<CheckMsg> submit = threadPoolExecutor.submit(new Callable<CheckMsg>() {
@Override
public CheckMsg call() throws Exception {
return insertWithTransactional(madAcb);
}
});
关于项目代码的测试:
@Override
public Object duoxianchengAnys() {
//TODO 这个问题研究
/*Local variable g defined in an enclosing scope must be final or effectively final*/
//事实证明确实是异步的
for(int i=1;i<20;i++){
int g=i;
threadPoolExecutor.submit(new Callable<CheckMsg>() {
@Override
public CheckMsg call() throws Exception {
System.out.println(g);
return null;
}
});
}
return null;
}
通过输出发现代码确实是异步执行的
1
4
3
2
5
6
9
7
14
8
16
17
15
13
12
11
10
19
18
ThreadPoolExecutor代码的网上的介绍:
https://www.cnblogs.com/yulinfeng/p/7021293.html
https://www.cnblogs.com/yulinfeng/p/7039979.html
发现博客园这个网址也不错的
网上的ExecutorService方式的多线程参考网址:
https://www.cnblogs.com/jiang4yu/p/11240517.html
网址里面还包括多线程的四种实现方式
其中的代码在: