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

wordpress主题官方网站自适应营销网站模板

wordpress主题官方网站,自适应营销网站模板,网站增加权重,中山全麦网站建设文章目录 1. 核心问题#xff1a;Spring 框架中的 Bean 是线程安全的吗#xff1f;2. 最佳实践与解决方案禁止方案#xff1a;滥用prototype作用域推荐方案#xff08;按优先级排序#xff09; 3. 生产环境中的典型案例Case 1#xff1a;订单服务统计Case 2#xff1a;用… 文章目录 1. 核心问题Spring 框架中的 Bean 是线程安全的吗2. 最佳实践与解决方案禁止方案滥用prototype作用域推荐方案按优先级排序 3. 生产环境中的典型案例Case 1订单服务统计Case 2用户会话存储 4. 关键总结 1. 核心问题Spring 框架中的 Bean 是线程安全的吗 核心点 Spring 中的 Bean 默认是单例singleton的。默认不线程安全 Spring 框架本身不对单例 Bean 进行线程安全封装。线程安全取决于使用方式 如果 Bean 的状态是不可变的或者不包含可变状态则在某种程度上是线程安全的。如果 Bean 包含可变状态且多线程同时访问就需要考虑线程安全问题。解决方案 改变作用域prototype可多例或自行处理线程同步。 让我们用一个通俗的类比来理解 类比一个公共图书馆的书籍 Spring 容器 想象一下 Spring 容器是一个大型的公共图书馆。Bean 图书馆里的每一本书都是一个 Bean。单例 Bean 想象一下图书馆里只有 一本 特别重要的参考书比如《Spring 官方文档》所有想查阅这本书的人线程都必须共用这一本。这就是单例 Bean。多例 Bean (Prototype) 想象一下图书馆里有很多本同一本书比如《Java 编程入门》每个人都可以拿一本自己的去读。这就是多例 Bean。Bean 的状态 书籍的内容就是 Bean 的状态。可变状态 如果这本书允许你在上面做笔记、划线、修改内容那么这本书就是具有可变状态的。不可变状态 如果这本书不允许任何修改只能阅读那么这本书就是具有不可变状态的。线程 来图书馆查阅书籍的每个人就是一个线程。 现在我们来套用类比来理解线程安全问题 单例 Bean (只有一本参考书): 如果多个读者线程同时想要在同一本参考书单例 Bean上做笔记修改状态就会产生冲突。第一个读者写了一半第二个读者也开始写内容就会混乱。这就是 线程不安全。多例 Bean (很多本入门书): 如果每个读者线程都拿一本自己的入门书多例 Bean他们可以在自己的书上随意做笔记修改状态互不影响。这就是 线程安全。不可变状态的单例 Bean (只能阅读的参考书): 如果这本参考书不允许做任何修改多个读者线程同时阅读访问不可变状态他们不会互相干扰。尽管是同一本书但因为内容不可修改所以是 线程安全 的。可变状态的单例 Bean (允许做笔记的参考书): 如果这本参考书允许做笔记多个读者线程同时做笔记就会产生线程不安全问题。 2. 最佳实践与解决方案 禁止方案滥用prototype作用域 问题每次请求创建新Bean实例导致内存飙升、GC压力增大违背单例设计初衷。适用场景仅当Bean需要持有请求级状态如用户会话数据时使用。 推荐方案按优先级排序 方案适用场景实现方式案例无状态设计绝大多数业务逻辑移除成员变量用局部变量/参数传递数据Service层业务方法ThreadLocal线程绑定的数据如用户身份ThreadLocalUserContext权限校验、数据库路由同步锁synchronized低并发场景的简单状态synchronized方法/代码块本地计数器并发工具类复杂状态管理AtomicInteger, ConcurrentHashMap分布式ID生成、缓存不可变对象配置类等只需初始化的数据用final修饰字段无setter方法系统参数配置Bean 3. 生产环境中的典型案例 Case 1订单服务统计 Service public class OrderService {// 错误多线程下totalOrders可能少加private long totalOrders 0; // 正确方案使用AtomicLongprivate final AtomicLong totalOrders new AtomicLong(0);public void placeOrder() {// 业务逻辑...totalOrders.incrementAndGet();} }Case 2用户会话存储 Service Scope(value WebApplicationContext.SCOPE_REQUEST, proxyMode ScopedProxyMode.TARGET_CLASS) public class UserSession { // 使用request作用域替代单例private String userId;// getter/setter... }// 更优方案ThreadLocal避免创建过多对象 public class UserContext {private static final ThreadLocalString USER_HOLDER new ThreadLocal();public static void setUserId(String id) { USER_HOLDER.set(id); }public static String getUserId() { return USER_HOLDER.get(); } }4. 关键总结 默认规则Spring单例Bean非线程安全安全与否取决于开发者的设计。黄金准则优先设计无状态Bean必须维护状态时用并发工具或ThreadLocal。避坑指南 避免在单例Bean中定义非final成员变量慎用prototype作用域同步锁范围要最小化锁方法不如锁代码块 延伸思考为什么Spring MVC的Controller默认单例却安全 答Controller中处理的HttpServletRequest和响应对象本质是每个请求独享由Tomcat线程池分配与单例Controller实例无关。
http://www.pierceye.com/news/107779/

相关文章:

  • 天津网站制作报价阿里云需要网站建设方案书
  • 做最好的美食分享网站网站建设客户需求分析
  • 如何重建网站广州市服务好的网站制作排名
  • 做一名优秀网站设计师计划网站描述怎样写
  • 网页二级网站怎么做网监关闭的网站怎么恢复
  • 甘肃省建设监理协会 官方网站国内知名公关公司
  • 如何将网站和域名绑定阿里云1M做网站
  • 南城网站建设公司咨询东莞智通人才网最新招聘
  • app建设网站公司哪家好php网站修改代码
  • 哪些网上订餐的网站做的好地情网站建设
  • 重庆推广网站的方法国内最近的新闻大事
  • 网站需要备案吗网站怎么推广软文
  • 做设计开哪个素材网站的会员好手机免费网站建设哪家公司好
  • 征婚网站认识的男人做定投保做高级电工题的网站
  • 学做饼干的网站汕头建设学校的网站
  • asp.net做网站原理工资卡app下载
  • 做齐鲁油官方网站集团网站建设报价
  • 网站的收录情况怎么查企业网银怎么登录
  • 网站开发会计处理wordpress阅读随机增加
  • 兰州做网站公司哪家好公司网站建设是什么意思
  • 小区物业管理网站开发报告deal 网站要怎么做
  • seo站长助手wordpress 注册侧边栏
  • 做网站是要编程吗那些网站是html5做的
  • 网站开发图在网站做电子画册
  • 怎样建一个英文网站wordpress 多用户商城
  • 制作一个自适应网站源码app在线生成器
  • Dw做html网站项目管理软件有哪些
  • 天津网站建设定制软件开发服务公司
  • 做企业网站cms减肥网站源码
  • 建设工程检测预约网站猎头公司怎么找