DBUtil教程(三)多线程异步查询

来源:互联网 发布:php 依赖注入 编辑:程序博客网 时间:2024/05/21 10:47

    DBUtil是支持多线程异步查询,简单例如callback模式.为什么会存在这么的查询模式,传统的数据库查询特点,是一个同步查询,首先建立connection,然后在connection获取statement,statement来执行sql语句,最后才会返回ResultSet.但是这个模式有比较大的弱点,如果一个sql语句查询时间过长,就会造成statement的exec时间过长了。

   后来我们在实际项目中遇到大数据量的问题,就尝试一个异步查询的模式,每次我们就把任务交给一个线程,每个线程就会是执行一个sql语句,不会阻塞主线程,当sql语句执行完,再通过callback,把数值返回给需要的方法。返回方法的对象依然是我们操作性特别强大的dbModel。

   

package com.shine.DBUtil;import com.shine.DBUtil.model.DBModel;public class AsynchronousSelectExample {public void getReusltModel(DBModel dbModel) {System.err.println(dbModel.getDataXml());dbModel.close();}/** * 异步查找例子 *  * @param args */public static void main(String[] args) {DBUtil.getInstance().init("E:\\workspace\\JavaFramework2.5\\src\\com\\shine\\DBUtil\\config\\dbXml.xml");AsynchronousSelectExample example = new AsynchronousSelectExample();DBUtil.getInstance().asynchronousExecuteQuery("jdbc/Default","select * from gdzfw_bag_video_link", example,"getReusltModel");}}
     系统特别只是初始化了20个异步查询线程,如果需要更多线程也可以配置实现。异步查询无法用于web,mvc模式,所以只是可以后台业务查询的逻辑操作。

   

原创粉丝点击