NIO与JDBC的再思考:同步与阻塞在论域上的根本区别

JDBC中STATEMENT的执行是同步的。但是非阻塞的。即,不同的STATEMENT间并不会互相阻塞。这一点与NIO是相似的。

同步的论域是纵向的。它表达的是模块间的协作模型。

阻塞的论域是横向的。它表达的是线程间的协作模型。维基上的解释也是这样的:http://en.wikipedia.org/wiki/Non-blocking_algorithm:

...The traditional approach to multi-threaded programming is to use locks to synchronize access to shared resources...

两者的语义都是动态的。模块协作与线程协作都是运行时语义。分别用来描述程序或系统内的纵向与横向协作。模块协作肯定是分时间进行的。而线程协作却有可能是或至少可以看成是同时进行的。

如果JDBC CONNECTION类的的所有STATEMENT操作都是非阻塞的,那么意味着同一个连接的STATEMENTS可以同时进行它们的动作。这样的话,就没有必要一定要用多个连接去连接同一个数据库。

如果用一个连接就可以达到同时即并发与数据库通信的目的,那我为什么要用连接池呢?特别是在并不存在任何事务性需求的环境下?

 

转载于:https://my.oschina.net/digerl/blog/30321

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值