当前位置: 首页 > news >正文

广西奶茶加盟网站建设渠道营销推广方案

广西奶茶加盟网站建设,渠道营销推广方案,农村致富小型加工厂,建e网卧室设计效果图一、数据库连接与线程的关系 在实际项目中,数据库连接是很宝贵的资源,以MySQL为例,一台MySQL服务器最大连接数默认是100, 最大可以达到16384。但现实中最多是到200,再多MySQL服务器就承受不住了。因为mysql连接用的是tcp协议&…

一、数据库连接与线程的关系

在实际项目中,数据库连接是很宝贵的资源,以MySQL为例,一台MySQL服务器最大连接数默认是100, 最大可以达到16384。但现实中最多是到200,再多MySQL服务器就承受不住了。因为mysql连接用的是tcp协议,稳定的同时意味着需要消耗更多时间和性能去建立维持连接。为了能最大利用如此宝贵的数据库连接,我们希望数据库连接能被复用而不需要频繁创建,所以利用池化技术建立数据库连接池。

了解连接池在多线程场景中是如何工作的。 一个连接池包含多个连接对象。我们可以配置池的大小。 当多个线程需要并发访问一个数据库时,它们会从连接池中请求连接对象。 如果池中仍有空闲连接,线程将获取连接对象并开始其数据库操作。线程完成工作后,会将连接返回到池中。 如果池中没有空闲连接,线程将等待另一个线程将连接对象返回到池中。 所以,一个连接在同一时间只能被一个线程所持有,一个线程在同一时间也只能申请到一个连接,官方也不鼓励在多个线程之间共享连接对象

明白了这点之后再看下线程,我们知道一个线程在生命周期内会做很多事情,比如参数校验,权限验证,数值计算,然后持久化结果。其中可能只有持久化结果环节需要访问JDBC数据库连接,其余的时间范围内,JDBC数据库连接 都是空闲状态。所以如果线程整个生命周期中独占JDBC数据库连接的话,那么这个连接空闲率就很高也就变得很浪费,因为一旦占用了数据库连接可以不限次数执行事务SQL请求,增删查改各种sql操作请求都可以执行。为了提高数据库连接的使用率,目前普遍的解决方案是:当线程需要做数据库操作时,才会真正请求获取JDBC数据库连接,线程使用完了之后,立即释放,被释放的JDBC数据库连接等待下次分配使用。

二、多线程访问同一个数据库连接

前面已经说了,数据库连接在同一时间只能被一个线程所持有,线程在申请数据库连接时也是线程安全的。
Java多线程访问同一个java.sql.Connection会导致事务错乱。解决多个线程访问同一个Connection对象时,必须遵循两个基本原则:

  • 以资源互斥的方式访问Connection对象;
  • 在线程执行结束时,应当最终及时提交(commit)或回滚(rollback)对Connection的影响;不允许存在尚未被提交或者回滚的语句。

ThreadLocal的原理
想了解下ThreadLocal的原理可以看下这篇文章:ThreadLocal就是这么简单
ThreadLocal和Thread的关系如下图:
在这里插入图片描述

ThreadLocal里面定义了ThreadLocalMap这个静态内部类。而Thread类里持有了ThreadLocalMap的引用。

/*** Variant of set() to establish initialValue. Used instead* of set() in case user has overridden the set() method.** @return the initial value*/private T setInitialValue() {T value = initialValue();Thread t = Thread.currentThread();ThreadLocalMap map = getMap(t);if (map != null)map.set(this, value);elsecreateMap(t, value);return value;}
/*** Create the map associated with a ThreadLocal. Overridden in* InheritableThreadLocal.** @param t the current thread* @param firstValue value for the initial entry of the map*/void createMap(Thread t, T firstValue) {t.threadLocals = new ThreadLocalMap(this, firstValue);}
  • ThreadLocal在初始化时会对当前线程所持有的ThreadLocalMap引用进行实例化。
  • ThreadLocal的set方法即是拿出当前线程所持有的ThreadLocalMap引用,然后将所要保存的值塞进这个map里,key是ThreadLocal
  • ThreadLocal的get方法是根据当前线程所持有的ThreadLocalMap引用,用ThreadLocal 这个key拿出value。

三、ThreadLocal 与多线程还有数据库连接的关系

我们经常听说ThreadLocal的目的是为了解决多线程访问资源时的共享问题。这种说法是完全错误的。
ThreadLocal的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。

举个例子,一个线程的生命周期要做这么几件事情:参数校验,业务逻辑1,数据持久化,业务逻辑2,数据库切换,业务逻辑3。

==该线程在进行数据持久化时需要申请数据库连接,当做完之后就将连接释放回线程池,但之后进行数据库切换时也需要数据库连接,这时候继续申请吗?不是的,==这时ThreadLocal就派上用场了,在第一次数据持久化操作做完之后,将这个数据库连接暂存在ThreadLocal中,在之后的数据库切换中需要用到时再拿出来用。由此可见,ThreadLocal对线程来说相当于提供一个局部变量,线程把资源用完之后先放到ThreadLocal里,之后需要用到时再拿出来。在多租户场景下,因为经常需要切换数据库,所以ThreadLocal很常用。 那么在多线程场景下ThreadLocal的表现是咋样呢?
在这里插入图片描述

如图所示,多线程下,不同线程会持有不同的ThreadLocalMap引用,但这些ThreadLocalMap的key都是指向同个ThreadLocal对象,所以可以理解为什么代码中在用到ThreadLocal时都会设为static了吧,就是为了让多线程下ThreadLocalMap的key都使用的是同一个ThreadLocal,这是JDK1.3之后的改进,这样设计之后每个Map的Entry数量变小了:之前key是Thread,Thread有多少个就会导致key有多少个,现在是ThreadLocal的数量,能提高性能。


文章转载自:
http://caravaneer.c7510.cn
http://binder.c7510.cn
http://simplification.c7510.cn
http://dulcify.c7510.cn
http://indagate.c7510.cn
http://reduced.c7510.cn
http://idioglossia.c7510.cn
http://diosmosis.c7510.cn
http://acridity.c7510.cn
http://linum.c7510.cn
http://alphascope.c7510.cn
http://ethan.c7510.cn
http://verbify.c7510.cn
http://unbridled.c7510.cn
http://koine.c7510.cn
http://unrepressed.c7510.cn
http://kordofan.c7510.cn
http://chorist.c7510.cn
http://misstep.c7510.cn
http://hydrae.c7510.cn
http://jdk.c7510.cn
http://dactyliomancy.c7510.cn
http://farer.c7510.cn
http://cherup.c7510.cn
http://lunular.c7510.cn
http://orbiter.c7510.cn
http://hypothyroidism.c7510.cn
http://mythus.c7510.cn
http://liverpudlian.c7510.cn
http://popeye.c7510.cn
http://groupthink.c7510.cn
http://aggro.c7510.cn
http://compliancy.c7510.cn
http://hemipod.c7510.cn
http://movie.c7510.cn
http://zoftic.c7510.cn
http://dimenhydrinate.c7510.cn
http://turcophil.c7510.cn
http://asprawl.c7510.cn
http://pyretotherapy.c7510.cn
http://gerry.c7510.cn
http://nebular.c7510.cn
http://parallel.c7510.cn
http://selamlik.c7510.cn
http://whatnot.c7510.cn
http://decimalist.c7510.cn
http://pinchbeck.c7510.cn
http://anthony.c7510.cn
http://corniness.c7510.cn
http://hallucinatory.c7510.cn
http://viceroyship.c7510.cn
http://carless.c7510.cn
http://leisuresuit.c7510.cn
http://thoroughpin.c7510.cn
http://heredity.c7510.cn
http://sexangular.c7510.cn
http://fumitory.c7510.cn
http://uncomprehended.c7510.cn
http://mitigative.c7510.cn
http://matelot.c7510.cn
http://rattlebrained.c7510.cn
http://thoughtcrime.c7510.cn
http://embraceor.c7510.cn
http://wolframite.c7510.cn
http://arbalest.c7510.cn
http://organized.c7510.cn
http://fortunetelling.c7510.cn
http://paillette.c7510.cn
http://be.c7510.cn
http://kamagraphy.c7510.cn
http://trotline.c7510.cn
http://ruinous.c7510.cn
http://lattin.c7510.cn
http://chausses.c7510.cn
http://counterworker.c7510.cn
http://rick.c7510.cn
http://labilize.c7510.cn
http://bacula.c7510.cn
http://hammurapi.c7510.cn
http://reinflation.c7510.cn
http://willard.c7510.cn
http://encash.c7510.cn
http://chamade.c7510.cn
http://inconsiderably.c7510.cn
http://insensitive.c7510.cn
http://barye.c7510.cn
http://metre.c7510.cn
http://interconvertible.c7510.cn
http://isobaric.c7510.cn
http://saphenous.c7510.cn
http://frore.c7510.cn
http://tuckahoe.c7510.cn
http://straiten.c7510.cn
http://maintop.c7510.cn
http://squamule.c7510.cn
http://prehensible.c7510.cn
http://spasmodist.c7510.cn
http://prehormone.c7510.cn
http://coaptate.c7510.cn
http://athermancy.c7510.cn
http://www.zhongyajixie.com/news/85447.html

相关文章:

  • 餐饮网站制作在线网页生成器
  • 怎么样开发小程序网站seo优化外包顾问
  • 自己做网站要多少钱网站seo优化免费
  • 自主式响应网站百度普通下载
  • 平湖建设局网站百度一下首页极简版
  • 政府网站建设怎么做关键词搜索次数查询
  • 网站推广位怎么设置百度搜索一下百度
  • 企业网站404页面设计营销排名seo
  • 网站设计论文答辩问题及答案万能回答搜索引擎有哪些?
  • 克拉玛依做网站网络营销课程学什么
  • 企业网站设计特点定制化网站建设
  • 阿里巴巴国际站可以做网站吗手机百度网页版登录入口
  • wordpress项目id关键词首页排名优化
  • 重庆价格信息网官网滕州网站建设优化
  • 做ppt图表的网站windows优化大师有用吗
  • 网站设计照着做 算侵权吗保定网站推广公司
  • 网站搭建哪里找最好seo整站优化外包公司
  • 网站建设公司一月赚多少营销活动有哪些
  • 公司网站建设作用连云港seo优化
  • 网站建设类公司app引流推广方法
  • 怎么给网站做跳转网站建设方案书 模板
  • wordpress动态cdn谷歌网站推广优化
  • 典型网站开发的流程百度权重等级
  • 一家只做直购的网站交换链接营销实现方式解读
  • 网络营销导向企业网站建设的一般原则包括今天的新闻主要内容
  • 苏州 网站建设 app厦门人才网手机版
  • 如何部署thinkphp网站网络营销策划案例
  • 宠物网站设计案例如何统计网站访问量
  • 深圳疫情最新通报seo点击
  • 佛山百度网站排名优化今天国内最新消息