你的位置:首页 > 软件开发 > Java > 我用LinkedBlockingQueue写的连接池

我用LinkedBlockingQueue写的连接池

发布时间:2016-11-27 21:00:20
什么是连接池呢?  我们登陆上某个网站,去修改个人信息、点击下单、修改购买商品的数量......当我们做这些操作时候,我们已经连接上数据库并修改、增加、删除数据库中的数据,完成操作后,关闭连接(避免占用资源)。如果很多人访问这个网站并进行操作,那要创建很多个连接,而且只操作一次就 ...

我用LinkedBlockingQueue写的连接池

 

什么是连接池呢?

  我们登陆上某个网站,去修改个人信息、点击下单、修改购买商品的数量......当我们做这些操作时候,

我们已经连接上数据库并修改、增加、删除数据库中的数据,完成操作后,关闭连接(避免占用资源)。

如果很多人访问这个网站并进行操作,那要创建很多个连接,而且只操作一次就关闭,这会显著的影响系统的

性能。连接池  就为解决这个难题应运而生。

连接池: 

  在系统初始化的时候,将数据库连接作为对象存放在内存中。当用户要访问数据库时,取出一个连接,

完成操作后归还到池中,等待下个用户使用。连接的创建、断开都由池来管理。我们可以设置连接池的参

数控制初始连接数、连接的上下限数、最大空闲时间......这项技术明显的提高对数据库操作的性能。

 

为什么要用LinkedBlockingQueue?

  LinkedBlockingQueue是实现了BlockingQueue的接口,继承了BlockingQueue的优点,同时又基

于自身链表结构,拥有自己的特色。

  在多线程环境下,使用BlockingQueue再也不需担心线程什么时候阻塞,什么时候需要唤醒线程,这些

BlockingQueue都一手包办了。当队列满了,生产者(存入数据的一方)线程就会发生阻塞,不再运行,

直到队列有空位,线程才会自动被唤醒。

  LinkedBlockingQueue继承了这些优点,而且能够高效的处理并发数据,因为其对于生产者和消费者

(取出数据的一方)分别独立采用的锁来控制数据同步,这意味着在高并发的情况下,生产者和消费者能够

可以并行的处理队列中的数据,提高队列中的并发性能。

 

 

编写一个线程池:

package org3.pool;import java.sql.Connection;import java.util.concurrent.LinkedBlockingQueue;/** * Created by Administrator on 2016/11/25. * 编写一个线程池 */public class Pool {  //用LinkedBlockingQueue来存放Connection对象  //设定其大小为4  private LinkedBlockingQueue<Connection> pool = new LinkedBlockingQueue<>( 4 );  //初始化线程池  public void initPool() {    //往池中添加4个连接对象    while ( pool.size() < 4 ) {      pool.add( DBUtil.getConnection() );    }    //确认一下池的大小    System.out.println( "初始化后size= " + pool.size() );  }  //获取一个连接  public Connection getConnection() {      Connection conn = null;      try {        //从池中取出一个连接        //当池中没有连接时,线程处于阻塞状态;当池中添加一个连接时,线程则被激活        conn = pool.take();        //确认一下池的大小        System.out.println( "取走了一个线程,线程大小为= " + pool.size() );      } catch (InterruptedException e) {        e.printStackTrace();      }      //返回一个 被代理 的连接对象      return ConnectionProxy.getConnectionProxy( conn, pool );  }}

原标题:我用LinkedBlockingQueue写的连接池

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录