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

毕业设计餐饮网站建设网站的搭建流程

毕业设计餐饮网站建设,网站的搭建流程,网站下载软件入口,江苏网站seo一、对ThreadLocal的理解 ThreadLocal#xff0c;很多地方叫做线程本地变量#xff0c;也有些地方叫做线程本地存储#xff0c;其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本#xff0c;那么每个线程可以访问自己内部的副本变量。这句…一、对ThreadLocal的理解 ThreadLocal很多地方叫做线程本地变量也有些地方叫做线程本地存储其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本那么每个线程可以访问自己内部的副本变量。这句话从字面上看起来很容易理解但是真正理解并不是那么容易。 ThreadLocal的官方API解释为 “该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物因为访问某个变量通过其 get 或 set 方法的每个线程都有自己的局部变量它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段它们希望将状态与某一个线程例如用户 ID 或事务 ID相关联。” 大概的意思有两点 1、ThreadLocal提供了一种访问某个变量的特殊方式访问到的变量属于当前线程即保证每个线程的变量不一样而同一个线程在任何地方拿到的变量都是一致的这就是所谓的线程隔离。 2、如果要使用ThreadLocal通常定义为private static类型在我看来最好是定义为private static final类型。 很多博客都这样说ThreadLocal为解决多线程程序的并发问题提供了一种新的思路ThreadLocal的目的是为了解决多线程访问资源时的共享问题。如果你也这样认为的那现在给你10秒钟清空之前对ThreadLocal的错误的认知ThreadLocal可以总结为一句话ThreadLocal的作用是提供线程内的局部变量这种变量在线程的生命周期内起作用减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。我们还是先来看一个例子 class ConnectionManager {private static Connection connect null;public static Connection openConnection() {if(connect null){connect DriverManager.getConnection();}return connect;}public static void closeConnection() {if(connect!null)connect.close();} } 假设有这样一个数据库链接管理类这段代码在单线程中使用是没有任何问题的但是如果在多线程中使用呢很显然在多线程中使用会存在线程安全问题第一这里面的2个方法都没有进行同步很可能在openConnection方法中会多次创建connect第二由于connect是共享变量那么必然在调用connect的地方需要使用到同步来保障线程安全因为很可能一个线程在使用connect进行数据库操作而另外一个线程调用closeConnection关闭链接。 所以出于线程安全的考虑必须将这段代码的两个方法进行同步处理并且在调用connect的地方需要进行同步处理。这样将会大大影响程序执行效率因为一个线程在使用connect进行数据库操作的时候其他线程只有等待。   那么大家来仔细分析一下这个问题这地方到底需不需要将connect变量进行共享事实上是不需要的。假如每个线程中都有一个connect变量各个线程之间对connect变量的访问实际上是没有依赖关系的即一个线程不需要关心其他线程是否对这个connect进行了修改的。 到这里可能会有朋友想到既然不需要在线程之间共享这个变量可以直接这样处理在每个需要使用数据库连接的方法中具体使用时才创建数据库链接然后在方法调用完毕再释放这个连接。比如下面这样 class ConnectionManager {private Connection connect null;public Connection openConnection() {if(connect null){connect DriverManager.getConnection();}return connect;}public void closeConnection() {if(connect!null)connect.close();} }class Dao{public void insert() {ConnectionManager connectionManager new ConnectionManager();Connection connection connectionManager.openConnection();//使用connection进行操作connectionManager.closeConnection();} }这样处理确实也没有任何问题由于每次都是在方法内部创建的连接那么线程之间自然不存在线程安全问题。但是这样会有一个致命的影响导致服务器压力非常大并且严重影响程序执行性能。由于在方法中需要频繁地开启和关闭数据库连接这样不尽严重影响程序执行效率还可能导致服务器压力巨大。 那么这种情况下使用ThreadLocal是再适合不过的了因为ThreadLocal在每个线程中对该变量会创建一个副本即每个线程内部都会有一个该变量且在线程内部任何地方都可以使用线程之间互不影响这样一来就不存在线程安全问题也不会严重影响程序执行性能。 但是要注意虽然ThreadLocal能够解决上面说的问题但是由于在每个线程中都创建了副本所以要考虑它对资源的消耗比如内存的占用会比不使用ThreadLocal要大。
http://www.hkea.cn/news/14374260/

相关文章:

  • 建设监理工程公司网站钢结构网站
  • 做爰网站视屏做化妆品注册和注册的网站吗
  • 搜索引擎网站推广可以自己做吗徐州城乡建设招投标网站
  • 免费做网站可以一直用吗怎么破解网站后台
  • 网站备案为什么 没有批复文件WordPress清爽主题
  • wordpress企业站模板罗湖住房和建设局网站
  • 滦平住房和城乡建设厅网站网站建设维护公司资质
  • 西安做网站的公司在线图片制作工具
  • 有网址和关键词就能刷网站排名网络服务设备有哪些
  • 济南网站假设推广网页网站自做全搞定
  • 深圳专业营销网站制作建筑设计公司logo
  • 优秀毕业设计网站设计网络营销具有哪些优势和吸引力
  • 优秀的设计网站有哪些内容珠海网站建设防
  • 成都网站建设桔子科技html5软件安装视频
  • 江西建设职业技术学院招生信息网站wordpress图片无法显示
  • asp.net 网站发布乱码问题wordpress开发+文档下载
  • wordpress给公司建站wordpress 专栏页面
  • 绵阳网站建设策划内容wordpress ftp wp-config.php
  • 电子商务网站建设与运营方向上海网站建设百度推广公司哪家好
  • 厦门人才网个人登录国内好的seo
  • 中山h5网站建设如何利用模板做网站
  • 做银行流水网站ps做特效哪个网站好
  • 广告公司简介模板100字页面优化的方法有哪些
  • 企业解决方案参考网站小说网站用什么虚拟主机
  • 海南网站建设推广同步网站内容怎么做
  • 网站建设的优势是什么意思现在电商做的设计用的什么网站
  • 专业做网站建设制作服务网站建设策划书封面
  • 网站优化比较好的公司个人短信接口wordpress
  • 照明工业网站建设营业执照年检入口
  • 国内flash网站怎么做拍卖网站吗