1, 用非静态方法去初始化一个静态成员变量会有线程安全问题

类的静态成员变量应该在类加载时就进行初始化的,然后再供所有的对象共享,不能在构造方法或要么将静态成员变量改成非静态的,要么使用synchronize static 线程安全的修改静态成员

public class AddressConfig {private static String host;private static Integer port;@Value("${post}")public static void setIp(String host) {AddressConfig.host = host;}@Value("${port}")public static void setPort(Integer port) {AddressConfig.port = port;}public static String getHost() {return host;}public static Integer getPort() {return port;}
}

例如上面我们使用配置文件注入静态成员变量, 为静态成员变量提供了pubic修饰的set方法,如果其他类调用了该set方法,那么这个静态成员变量的值就会改变, 但是静态成员变量是所有对象共享的,就所有使用到的地方的值都改变

2, 不要在父类的构造方法中调用可以被子类重写的方法

在父类的构造方法中调用了可能被子类重写的方法时,很可能导致异常.因为在子类初始化的时候, 会去调用父类的构造方法, 一旦子类重写了该方法,由于多态特点, 则父类初始化时调用的就不再是自己写的方法,而子类重写的方法

方法中使用成员变量时,究竟使用的是父类还是子类的成员变量,则由方法所在的类决定;即方法在父类中定义和执行,则访问的是父类的成员变量,方法在子类中定义(包括覆盖父类方法)和执行,则访问的是子类的成员变量。
子类对象的初始过程:
(1)初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;
(2)初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化;
(3)初始化父类的普通成员变量和执行构造代码块,再执行父类的构造方法;
(4)初始化子类的普通成员变量和执行构造代码块,再执行子类的构造方法;

记录java中两个可能导致安全问题的代码相关推荐

  1. Java中两数交换引发的值传递问题及解决方案

    Java中两数交换引发的值传递问题及解决方案 今天导师分享了一个有趣的代码,记录一下,让我们一起看看~ //交换两个整数 private static void swap(int i, int j) ...

  2. java中两种异常类型_Java中的三种异常类型

    java中两种异常类型 Errors are the bane of users and programmers alike. Developers obviously don't want thei ...

  3. Java中两种抛出异常的方式

    Java中两种抛出异常的方式 在Java中有两种抛出异常的方式,一种是throw,直接抛出异常,另一种是throws,间接抛出异常. 直接抛出异常是在方法中用关键字throw引发明确的异常.当thro ...

  4. java中两任务并行运行_Java并行编程中的“可调用”与“可运行”任务

    java中两任务并行运行 当我们用Java编写多线程应用程序时,我们倾向于使用" Runnable "接口来实现线程类. 您的类必须简单地实现此接口并覆盖run方法. 对于琐碎的用 ...

  5. [转] 有关java中两个整数的交换问题

    转载申明:本文主要是用于自己学习使用,为了完善自己的只是框架,没有任何的商业目的. 原文来源:有关Java中两个整数的交换问题 如果侵权,麻烦告之,立刻删除. 在程序开发的过程,要交换两个变量的内容, ...

  6. java中两个list合并和去重操作

    java中两个list合并并去除重复 public static void main(String[] args) throws Exception {List list1 =new ArrayLis ...

  7. java中三种可能导致异常的情况_JAVA基础知识点之异常

    一.JAVA异常 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描 ...

  8. java两个文件夹比较路径_比较Java中两个文件的路径

    java两个文件夹比较路径 Given the paths of the two files and we have two compare the paths of the files in Jav ...

  9. JAVA中两个char类型相加_1、JAVA中的几种基本类型,各占用多少字节?

    1.Java是一种强类型语言.这就意味着必须为每一个变量声明一种类型.在Java中,-共有8种基本类型,其中有4种整型.2种浮点类型.1种用于表示Unicode编码的字符单元的字符类型char和1种用 ...

最新文章

  1. Posterior decompression
  2. 机器学习笔记(二十二):逻辑回归中使用模型正则化
  3. Hbase的MapReduce(Hbase权威指南)+ BulkLoad导入HBase
  4. Mybatis 拦截器 说明和使用 (一)
  5. SAPscript Forms 教程
  6. JMeter Ramp-up 说明
  7. java读取json文件
  8. linux宝塔下如何强制ssl,宝塔面板一键安装SSL证书强制HTTPS访问设置
  9. Vimium --- 将你的Chrome变成Vim
  10. 虚拟机中的计算机名称,如何获取VMware虚拟机主机的名称和IP?
  11. 电容笔和触控笔有哪些区别?双十一好用不贵电容笔推荐
  12. 【HTTP】HTTP Authorization 之 Basic Auth 和 X-Auth-Token
  13. css一些零零散散的问题
  14. rabbitmq的安装与命令行管理工具rabbitmqadmin的使用
  15. invalid sub button url domain hint 解决方法
  16. Springboot使用Mapstruct拷贝对象,集成swagger2
  17. 华大单片机GPIO配置
  18. Photoshop脚本 给图片添加噪点
  19. AntV | 蚂蚁数据可视化 G2Plot 快速入门
  20. 物业服务企业可以向不交纳物业服务费的业主收取滞纳金吗?

热门文章

  1. SegFormer: Simple and Efficient Design for Semantic Segmentation with Transformers
  2. 单商户商城系统功能拆解25—营销中心—优惠券
  3. 网易有道 UI 自动化探索与落地方案
  4. 用一条SQL语句查出每门课都大于80分的学生的姓名
  5. 做为一名大数据新手,应该通过这篇文章了解大数据
  6. 我是如何从月薪4500努力到年薪30W-上篇
  7. 《逻辑哲学论》 (最后部分节选)
  8. 用计算机弹的九八k简谱,作曲 编曲 配器 录音 混音 母带 MIDI 电脑音乐制作(超级全能宝典)...
  9. 大连理工学php,大连理工大学教务处(大连理工大学国内交换生)
  10. 20220513-rk3568编译linux4.19的buildroot4-(rootrs)