java每写一句代码 都要想下是不是线程安全?

来源:3-3 SimpleDateFormat线程不安全的原因

春去_秋来

2020-09-11

java每写一句代码 都要想下是不是线程安全?那不是很麻烦

写回答

1回答

张勤一

2020-09-11

春去秋来你好:

        哈哈哈,肯定肯定的说,这是没有必要的。关于线程安全,我们在写代码时肯定要多加注意,但是这也与你的代码是否使用了多线程是相关的。总结下来,关于线程安全的问题,你在写代码时,哪些场景下才需要注意呢?

    (1)对于 java 代码,如果你显示的使用了多线程(比如线程池或者是自己 new  Thread),且你操作了全局变量(包括全局静态变量),那么,你一定要考虑线程安全的问题;

    (2)对于 Spring 代码,由于我们的 Bean 没有额外定义的话,默认都是单例的,这在绝大多数情况下不会有问题,因为 Bean 基本上都是 “无状态的”(也就是 Bean 中不存在全局变量的情况),那么,此时,你没有任何必要去考虑线程安全的问题;反过来,如果你定义了有状态的 Bean,你就需要考虑了(但是,话又说回来,为什么要在 Bean 中定义全局变量呢?)

    (3)即使你在使用多线程,但是,你操作的仅仅是局部变量(定义在方法中的变量),那么,你完全不需要考虑线程安全的问题,因为这些数据保存在线程自己的栈空,是绝对安全且不共享的

    总结:如果你的数据被多线程共享,且存在修改的风险,需要注意线程安全;否则,没有必要在意!


    我是勤一,致力于将这门课程的问答区打造为 Java 知识体系知识库,Java 知识体系 BBS!共同建造、维护这门课程,我需要每一个你!

4
0

Java实操避坑指南 SpringBoot/MySQL/Redis错误详解

掌握业务开发中各种类型的坑,,Java web开发领域通用

466 学习 · 204 问题

查看课程