Springboot tomcat bean 默认作用域 singleton 情况下模拟线程不安全情况 设置多例方式 prototype

news2024/9/27 15:25:38

目录

写一个控制层的类

验证方法

​编辑

分别执行如下请求,先执行等待时间久的

日志结果

结论

配置多例模式

配置文件application.properties

类加注解

配置类方式



写一个控制层的类

package com.example.ctr;
 
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
@Slf4j
public class Api {
       int cc = 0;
    static int ccs = 0;
    @RequestMapping("/sleep/{num}")
    public String sleep(@PathVariable int num) throws InterruptedException {
        cc = num;
        ccs = num;
        int s = num;
        log.info(Thread.currentThread().getName()+" "+num+"  start  方法级变量="+s+"类级变量=" +cc +" 类级静态变量="+ccs);
        Thread.sleep(num);
        log.info(Thread.currentThread().getName()+" "+num+" end   方法级变量="+s+"类级变量=" +cc +" 类级静态变量="+ccs);
        return "ok   方法级变量="+s+"类级变量=" +cc +" 类级静态变量="+ccs;
    }

}

验证方法

分别执行如下请求,先执行等待时间久的

http://localhost:8101/api/sleep/60000

http://localhost:8101/api/sleep/30000

http://localhost:8101/api/sleep/10000

http://localhost:8101/api/sleep/5000

http://localhost:8101/api/sleep/1000

日志结果

2023-07-03 14:19:06.616  INFO 33444 --- [nio-8101-exec-1] com.example.ctr.Api                      : http-nio-8101-exec-1 60000  start  方法级变量=60000类级变量=60000 类级静态变量=60000
2023-07-03 14:19:07.171  INFO 33444 --- [nio-8101-exec-2] com.example.ctr.Api                      : http-nio-8101-exec-2 30000  start  方法级变量=30000类级变量=30000 类级静态变量=30000
2023-07-03 14:19:08.318  INFO 33444 --- [nio-8101-exec-3] com.example.ctr.Api                      : http-nio-8101-exec-3 10000  start  方法级变量=10000类级变量=10000 类级静态变量=10000
2023-07-03 14:19:09.705  INFO 33444 --- [nio-8101-exec-4] com.example.ctr.Api                      : http-nio-8101-exec-4 5000  start  方法级变量=5000类级变量=5000 类级静态变量=5000
2023-07-03 14:19:11.277  INFO 33444 --- [nio-8101-exec-5] com.example.ctr.Api                      : http-nio-8101-exec-5 1000  start  方法级变量=1000类级变量=1000 类级静态变量=1000
2023-07-03 14:19:12.286  INFO 33444 --- [nio-8101-exec-5] com.example.ctr.Api                      : http-nio-8101-exec-5 1000 end   方法级变量=1000类级变量=1000 类级静态变量=1000
2023-07-03 14:19:14.707  INFO 33444 --- [nio-8101-exec-4] com.example.ctr.Api                      : http-nio-8101-exec-4 5000 end   方法级变量=5000类级变量=1000 类级静态变量=1000
2023-07-03 14:19:18.322  INFO 33444 --- [nio-8101-exec-3] com.example.ctr.Api                      : http-nio-8101-exec-3 10000 end   方法级变量=10000类级变量=1000 类级静态变量=1000
2023-07-03 14:19:37.181  INFO 33444 --- [nio-8101-exec-2] com.example.ctr.Api                      : http-nio-8101-exec-2 30000 end   方法级变量=30000类级变量=1000 类级静态变量=1000
2023-07-03 14:20:06.628  INFO 33444 --- [nio-8101-exec-1] com.example.ctr.Api                      : http-nio-8101-exec-1 60000 end   方法级变量=60000类级变量=1000 类级静态变量=1000

可见 执行久的线程,在运行中 对象级的变量,再新请求来后变量发生改变

结论

方法级变量线程安全

对象级变量和静态变量都不安全

ok

持续更新

配置多例模式

配置文件application.properties

spring.main.allow-bean-definition-overriding=true

类加注解

@Component
@Scope("prototype")
public class MyBean {
    //...
}

配置类方式

@Configuration
public class MyConfig {
    @Bean
    @Scope("prototype")
    public MyBean myBean(){
        return new MyBean();
    }
}

ok

持续更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/712381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ISE】PlanAhead report_timing报VIOLATED问题

这里写自定义目录标题 背景ISE PR结果PlanAhead结果使用ISE twx使用PlanAhead综合、实现 问题 分析Timer Settings 结论? 背景 最近调试一个老型号FPGA,时序问题分析,方便以后参考。 ISE PR结果 在下图可以看到All Constraints Met&#x…

iOS iPadOS safari 独立Web应用屏幕旋转的时候 onresize window.innerHeight 数值不对。

iOS iPadOS safari 独立Web应用屏幕旋转的时候 onresize window.innerHeight 数值不对 一、问题描述 我有一个日记应用,是可以作为独立 Web 应用运行的那种,但在旋转屏幕的时候获取到的 window.innerHeight 和 window.innerWidth 就不对了,…

【C#】使用System.Data.SqlClient 进行简单批量操作

在实际项目开发中,可能会在定时任务里进行批量添加的操作,或者需要写一些小工具进行批量添加测试。 此篇文章就是使用System.Data.SqlClient 进行简单批量操作。 目录 1、批量插入数据1.1、示例代码1.2、列映射1.3、是否需要映射列 2、批量更新数据3、链…

ZigBee组网-基于协议栈的UART实验(实现收发)(保姆级)

目录 基于协议栈的UART实验 前言 协议栈中的TI自带UART的使用实验 UART配置基本步骤 串口初始化 串口发送 串口接收回显 实验效果 拓展 移植我们自己UART串口 移植配置过程 实验效果 基于协议栈的UART实验 前言 与之前的Zigbee裸机实验不同,我们既可以…

神奇的MATLAB解密工具,让你轻松解密.p文件!

大家都知道,MATLAB是一款功能强大的数学软件,但是在进行代码保护和共享方面,却存在一些困难。这时候,一款优秀的MATLAB解密工具就显得尤为重要。它可以帮助我们解决诸多问题,比如.p文件解密、p文件转m代码等。接下来&a…

mallocstacklogging和MallocStackLoggingNoCompact引起的app文稿数据快速增加

最近由于定位一个iOS16系统适配引起的闪退设置了mallocstacklogging和MallocStackLoggingNoCompact。 配置如下: 在上线前测试,结果发现手机存储空间不足。删除了手机的很多图片后,测试不到两分钟,手机存储空间又不足了。查看app…

Flink运行原理

Apache Flink是什么?对于这个问题,Apache软件基金会官方给出了定义:Flink是一种框架和分布式处理引擎,主要用于对无界和有界数据流进行有状态计算。 本文将从以下几个方面来了解flink运行原理: 【Flink运行时四大组件…

骨传导耳机可以长期佩戴吗,几款佩戴舒适的骨传导耳机清单

骨传导耳机是通过耳朵传声方式,提高了听神经的使用频率,对听觉系统所产生刺激会随之下降。目前骨传导耳机主要应用于运动和娱乐两大领域,尤其是在运动场景中骨传导耳机能够避免传统耳机因佩戴入耳式耳机造成的听力下降问题,更能增…

Python批量将doc转成docx并读取docx的内容

有时候我们需要将doc的文件转成docx的格式,但是如果直接修改文件名后缀的话有时候会没有效果,今天我们利用python批量将doc后缀的word文档转成docx的格式。 也找了很多方法,最终还是找到了就是利用win32com去解决这个问题 很多人在执行这一…

【MySQL】不就是事务

前言 嗨咯,小伙伴们大家好呀,我已经一个星期没有更新了,实在抱歉!本期我们要学习MySQL初阶中的最后一课,MySQL数据库中的事务也算是近几年面试必考的问题,所以我们一定要认真学习。 目录 前言 目录 一、事…

学会用智慧轻松的方式过生活

曾经,有位远在黑龙江的女性福主告诉峰民,她说她活不久了。 峰民很是惊讶,不可能吧,你才39岁啊, 她说:我查出了子宫有瘤,峰民听后就说,没事,放心,肯定是良性。…

Python3,处理Excel文件IO流的方法那么多,或许只有Pandas算得上靠谱。

Pandas处理Excel文件IO流的方法 1、引言2、代码实例2.1 什么是文件IO流2.1.1定义2.1.2 字节流、字符流 2.2 常见的Excel文件IO流处理方法2.3 Pandas处理Excel文件IO流2.3.1 直接读取处理2.3.2 转换io流进行处理 3、总结 1、引言 小屌丝:鱼哥, 求助。 小…

深度学习技巧应用22-构建万能数据生成类的技巧,适用于CNN,RNN,GNN模型的调试与训练贯通

大家好,我是微学AI,今天给大家介绍一下深度学习技巧应用22-构建万能数据生成类的技巧,适用于CNN,RNN,GNN模型的调试与训练贯通。本文将实现了一个万能数据生成类的编写,并使用PyTorch框架训练CNN、RNN和GNN模型。 目录&#xff1…

摄像机控制——旁轴摇移

通常摄像机进行摇移控制的时候,都是以摄像机正前方中心位置作为注视点进行环绕控制的,如果在注释点位置有物体,那么感受上是围绕着该物体进行观察。 但是最近公司的策划要求摇移时候的围绕点是鼠标点击的位置,而不是摄像机的正中心…

零基础网络安全学习路线,真的很全,建议收藏!!!

很多小伙伴在网上搜索网络安全时,会出来网络安全工程师这样一个职位,它的范围很广,只要是与网络安全挂钩的技术人员都算网络安全工程师,一些小伙伴就有疑问了,网络安全现在真的很火吗? 那么今天博主就带大…

从0实现基于Linux socket聊天室-多线程服务器模型(一)

前言Socket在实际系统程序开发当中,应用非常广泛,也非常重要。实际应用中服务器经常需要支持多个客户端连接,实现高并发服务器模型显得尤为重要。高并发服务器从简单的循环服务器模型处理少量网络并发请求,演进到解决C10K&#xf…

AntDB数据库将携创新性解决方案亮相2023可信数据库发展大会

由中国通信标准化协会指导,中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)主办的“2023可信数据库发展大会”将于2023年7月4日——5日在北京国际会议中心召开。作为深耕通信行业15年的国产数据库产品,AntDB受邀参会&…

记录一下kibana启动链接报错问题(kibana server is not ready yet)

记录一下kibana启动链接报错问题(kibana server is not ready yet) 今天启动kibana出现该问题 先去看了看是否是elasticsearch连接出错 启动了容器 docker start elasticsearch docker start kibana进入了kibana容器 docker exec -it kibana bash进行了下面的操作&#xf…

No suitable driver found for

在学习Mbatis时候遇到的奇怪的问题,报错提示如图所示,提示找不到数据库驱动 检查db.properties文件,一开始认为没问题 drivercom.mysql.jdbc.Driver urljdbc:mysql://localhost:3306/mybatis?useSSLfalse&useUnicodetrue&characterEncodingUTF…

华为OD机试真题2023Q1 100分 + 2023 B卷(JavaPythonJavaScript)

目录 2023 5月 B卷 “新加题”(100分值)2023Q1 100分下面分享一道“2023Q1 200分 机器人活动区域”的解题思路一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出 大家好,我是哪吒。 五月份之前…