同步

jackaudrey 2010-06-03 10:21:54
有一个函数方法,是用来取得数据库的链接
public Connection getConnnection(){
connectionsPool.removeFirst();
}
其中conncetionsPool里面放的是对象初始化的时候创建的一个连接池,用LinkedList<Connection>实现,里面有十个链接,
connectionsPool.removeFirst()是拿出头部的一个链接,
假如有多个线程同步访问,书上说有可能会拿到同一个链接,这怎么可能?
...全文
51 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
izard999 2010-06-03
  • 打赏
  • 举报
回复
留痕!!!!!!!!
jackaudrey 2010-06-03
  • 打赏
  • 举报
回复
说的很明白,受益了!
风过无痕1110 2010-06-03
  • 打赏
  • 举报
回复
当然有可能,因为你从LinkedList<Connection>拿东西不是瞬间完成的,至少得有如下步骤吧?
首先要明白LinkedList<Connection>存的是一个个的引用
1,将LinkedList<Connection>里第一个引用指向的对象赋给你
2,将LinkedList<Connection>里第一个引用删除掉
总有个先后顺序
假设A线程执行到第一步,而没来得及执行第二步
此时B线程进来了,也执行了第一步
因此都获得了第一个connection
总结:凡是不能瞬间完成的操作,除非加了锁,不然都会出现线程安全问题

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧