-
Notifications
You must be signed in to change notification settings - Fork 8.6k
Druid锁的公平模式问题
wenshao edited this page Oct 23, 2012
·
7 revisions
锁的公平和效率是一个需要平衡的问题。
如果配置了maxWait,在连接不够用争用时,unfair模式的ReentrantLock.tryLock方法存在严重不公的现象,个别线程会等到超时了还获取不到连接。
版本 | 处理方式 | 效果 |
---|---|---|
0.2.3之前 | unfair | 并发性能很好。 maxWait>0的配置下,出现严重不公平现象 |
0.2.3 ~ 0.2.6 | fair | 公平,但是并发性能很差 |
0.2.7</td> | 通过构造函数传入参数指定fair或者unfair,缺省fair</td> | 按需要配置,但是比较麻烦</td> |
0.2.8</td> | 缺省unfair,通过构造函数传入参数指定fair或者unfair; 如果DruidDataSource还没有初始化,修改maxWait大于0,自动转换为fair模式</td> |
智能配置,能够兼顾性能和公平性</td> |