java多线程查询数据库(线程池) 需求介绍: 调用接口后一个页面要展示两个列表,而且数据量很大。 分析: 如果按原始方法进行两次查询再将结果返回当然也是可以的。但是查询时间就是两个查询的和,数据量很小的话...
public class CreateThreadUtil {
private static final int THREAD_POOL_SIZE = 2;//线程数量
public static ThreadPoolExecutor createThread(String guid)//传入一个线程池名字,可随意
{
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat(guid).build();//创建线程工厂
//创建线程池
ThreadPoolExecutor executor = new ThreadPoolExecutor(THREAD_POOL_SIZE,
THREAD_POOL_SIZE,
0L,
TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<>(1024),
namedThreadFactory,
new ThreadPoolExecutor.AbortPolicy());
return executor;
}
}
//定义第一个线程方法
Callable getTableDetail = new Callable<List>() {
@Override
public List call() {
String sql = "select * from xxx ";
return jdbcTemplate.queryForList(sql);
}
};
//定义第二个线程方法
Callable getFieldList = new Callable<List<Integer>>() {
@Override
public List call() {
String sql2 = "SELECT * FROM yyy";
return jdbcTemplate.queryForList(sql2);
}
};
//创建线程任务
FutureTask getTableDetailTask = new FutureTask(getTableDetail);
FutureTask getFieldListTask = new FutureTask(getFieldList);
//开启线程
executor.submit(getTableDetailTask);
executor.submit(getFieldListTask);
//优美得关闭线程
executor.shutdown();
本站为非盈利网站,如果您喜欢这篇文章,欢迎支持我们继续运营!
本站主要用于日常笔记的记录和生活日志。本站不保证所有内容信息可靠!(大多数文章属于搬运!)如有版权问题,请联系我立即删除:“abcdsjx@126.com”。
QQ: 1164453243
邮箱: abcdsjx@126.com