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

北京网站建设企业网站制作网络公司推广方案

北京网站建设企业网站制作,网络公司推广方案,招聘广告设计,网站开发询价表模板下载全局和局部线程池 全局线程池 在Spring框架中,全局线程池如ThreadPoolTaskExecutor通常是作为Spring Bean存在的,它们的生命周期由Spring容器管理。当Spring容器关闭时,这些线程池也会被适当地清理和关闭。因此,开发者通常不需要手…
  • 全局和局部线程池
    • 全局线程池
      • 在Spring框架中,全局线程池如ThreadPoolTaskExecutor通常是作为Spring Bean存在的,它们的生命周期由Spring容器管理。当Spring容器关闭时,这些线程池也会被适当地清理和关闭。因此,开发者通常不需要手动关闭这些全局线程池
    • 局部线程池
      • 对于在方法内部或者某个局部作用域创建的线程池,它们是局部资源,不会被Spring容器管理。如果不关闭这些线程池,可能会导致线程泄漏,因为这些线程池会继续存在并占用系统资源,直到程序结束。因此,使用完局部线程池后,需要调用shutdown()或shutdownNow()方法来关闭线程池,释放资源。
    • 资源管理
      • 关闭线程池是为了合理管理资源,防止资源泄露和浪费。全局线程池由Spring容器管理,可以确保在应用关闭时得到妥善处理。而局部线程池如果没有正确关闭,可能会导致不必要的资源占用,甚至影响应用程序的稳定性。
    • 总结:全局线程池由于其与Spring容器的生命周期绑定,通常不需要手动关闭;而局部线程池需要在使用完毕后显式关闭,以避免资源泄露和其他潜在问题。
    • 多线程使用要设置超时时间不然会OOM
      • 默认:超时时间并不是一个固定的时间,而是取决于多种因素,包括Spring的配置、操作系统和Java虚拟机的配置等
      • 设置了最大活跃时间,会变成默认超时时间
      • 原因:线程资源未释放,如果线程执行的任务长时间无法完成,这些线程会持续占用系统资源,包括内存。当应用创建过多未完成任务的线程时,内存资源逐渐被消耗,最终可能导致内存不足,从而引发OO
  • 单个线程池和多个线程池
    • 案例区别
      • 某程序使用:
        • ThreadPoolExecutor ThreadPoolAll = new ThreadPoolExecutor(30,60);
      • 某程序使用:
        • ThreadPoolExecutor ThreadPoolA = new ThreadPoolExecutor(15,30);
        • ThreadPoolExecutor ThreadPoolB = new ThreadPoolExecutor(15,30);
    • 单个线程池的优势
      • 简单:只需要管理一个线程池,代码实现和维护相对简单。
      • 资源共享:所有任务都在同一个线程池中执行,可以更好地利用系统资源,避免资源碎片化即有效利用资源。
    • 多个线程池的优势
      • 线程池资源隔离:每个线程池都有其最大线程数限制,可以防止某个线程池占用过多资源,导致其他线程池资源不足。
      • 任务优先级:通过配置不同的线程池,可以根据任务优先级为不同类型的任务分配不同的资源。
      • 鲁棒性:如果某个线程池出现问题,不会影响到其他线程池的正常运行。
  • ThreadLocal
    • 存储原理
      • threadLocal内部维护了一个Map,用于存储线程ID到其对应变量副本的映射。当一个线程访问ThreadLocal时,它会通过线程ID在Map中找到对应的变量副本。这样,即使多个线程同时访问同一个ThreadLocal变量,它们也只会访问到自己线程的专属副本。
      • 线程ID是关键,主线程会有主线程的线程ID,子线程会有子线程的线程ID,根据ID找副本
    • 依赖部署内存
      • ThreadLocal并不直接依赖部署内存,因为它主要是在运行时为每个线程分配独立的变量副本。然而,ThreadLocal的实现需要消耗一定的内存资源,因为它需要为每个线程维护一个Map结构来存储变量副本。因此,在使用ThreadLocal时,需要关注它对系统内存的影响
    • 使用注意
      • 需要注意的是,ThreadLocal不会自动回收不再使用的线程变量副本。如果线程长时间运行且频繁使用ThreadLocal,可能导致内存泄漏。因此,在使用ThreadLocal时,要确保在线程结束时手动调用remove()方法,以释放内存资源。
      • 弱引用原因
      • k-v; k都有模块名称,来区分上游链路调用,通过模块名称+线程id,确保底层的ThreadLocalMap在不同工作区间工作
    • 操作
      • set
      • get
      • remove
    • 使用场景
      • 为每个线程分配一个独享的对象,如Connection
      • 保存全局变量,特别是在拦截器中获取用户信息的场景。这样可以让不同方法直接使用这些变量,避免参数传递的麻烦
      • 数据库连接池的应用
        • 好处
          • 1,在数据库连接池中使用ThreadLocal的主要原因是为了保证每个线程都有其独立的数据库连接,这样可以避免多个线程之间的连接干扰,提高系统的稳定性和性能。
          • 2,ThreadLocal可以为每个线程提供一个独立的数据库连接,确保多个线程操作数据库时不会出现资源竞争的问题。此外,当每个线程都拥有自己的数据库连接时,避免了频繁地从连接池中获取和归还连接的开销,因此可以提高性能
          • 3,ThreadLocal还可以确保在一个线程内,可能需要进行的多个数据库操作使用的是同一个连接,从而保证事务的一致性
            • 类似用户是一个主线程在应用配置的分布式事务中,主线程拥有线程id,这个线程id有两个数据库的connection链接副本,所以能保证事务的一致性
            • 多个用户,多个线程ID
        • 不使用ThreadLocal的影响
          • 每次需要数据库连接时,都必须从连接池中获取,而在操作完成后归还。这样的频繁操作会增加额外的开销
          • 如果多个线程共享同一个数据库连接,可能会出现数据混乱、连接状态被意外修改等问题。同时,要确保一个线程内的多个数据库操作使用同一个连接进行事务管理会变得复杂
        • 总结
          • 数据库连接池使用ThreadLocal的主要原因是为了保证每个线程都有一个独立的数据库连接,从而提高系统的稳定性和性能。ThreadLocal为每个线程提供了独立的资源副本,避免了资源竞争的问题,并且可以通过缓存连接来减少频繁获取和归还连接的开销。此外,ThreadLocal还有助于简化事务管理,确保多个数据库操作在同一事务内进行。如果不使用ThreadLocal,可能会导致资源竞争、数据混乱和事务一致性问题。
http://www.hkea.cn/news/431111/

相关文章:

  • 怎么帮公司做网站建设谷歌搜索引擎免费入口 香港
  • 请写出网站建设前期需要做的准备外贸定制网站建设电话
  • 南京门户网站建设网络营销优秀案例
  • 2012服务器如何做网站周口网络推广哪家好
  • 贵阳搜索玩的网站网络舆情软件免费入口
  • 前端自己写代码建网站要花多少钱游戏推广在哪里接活
  • 网站建设中+网页代码nba最新排名东西部
  • 东莞企业建设网站官网有限公司百度推广深圳分公司
  • 海外推广工作内容搜索引擎优化seo是什么
  • wordpress 发短信西安网络优化大的公司
  • dreamweaver个人网站南宁求介绍seo软件
  • 网站常用素材企业培训视频
  • 北京市通州区建设委员会网站网站新站整站排名
  • 太原网站推广只选中联传媒推广排名seo
  • 企业网站建设的常见流程为百度互联网营销顾问
  • 养殖企业网站网络营销策划名词解释
  • 如何进行电子商务网站推广?百度网盘app
  • 做情趣网站需要什么资质sem推广外包
  • 国外网站做任务赚钱的最近新闻有哪些
  • 建设部网站查资质中裕隆百度推广登录平台网址
  • 黄页网站大全免费山东网络推广优化排名
  • 网站文字代码常见的网络营销工具
  • 计算机毕设网站建设怎么改长沙网站设计拓谋网络
  • 类似红盟的网站怎么做aso优化推广
  • vs2013做网站怎样制作免费网页
  • b2c网站的开发无锡网络优化推广公司
  • 网站做视频在线观看营销活动推广方案
  • wordpress多站点统计google图片搜索引擎入口
  • 麻章手机网站建设百度网盘提取码入口
  • 网站后台管理系统的重要技术指标sem竞价托管费用