Java开发系列
文章平均质量分 76
最爱吃葡萄
Ung------
展开
-
Java中子类继承父类,父类中定义定义了抽象方法,子类在实现时,给子类变量赋值,执行构造后,变量值恢复成默认值
定义了一个抽象类()如下,目的是提供通用接口,在创建时会调用initData方法。2、创建实现类3、调试并验证按照我的预期,结果应该是:但是结果却是:表现出来的现象是,代码执行完init赋值之后,又被赋值回初始值了。背景就上面的问题了,通过打断点等等一系列调试之后,发现,在子类执行完父类的构造方法之后,又将自己的属性赋值了。于是推测,是子类属性赋值与父类构造方法的执行顺序导致的问题出现:我发现,在invokespecial处是执行父类构造方法,执行之后,果然在下面又对自己的属性赋值了初始值。既原创 2022-06-13 12:14:28 · 1520 阅读 · 0 评论 -
Java中的线程安全(1)之互斥同步
Java中的线程安全(1)之互斥同步最近的一段时间见一直在研究线程安全的实现原理。以前知道Java给提供了synchronized关键字和JUC工具包可以用来实现线程安全访问。当时我就有一些疑问,为什么需要这样的工具?而以上的这两种方式分别是怎样保证的线程工具?总结下来就是这样两个问题:synchronized关键字是来解决什么问题?为什么它能解决这样的问题?有了synchronized为什么又出了Lock?1. synchronized关键字是来解决什么问题?在解释这个问题之前,先看原创 2022-03-17 20:04:10 · 708 阅读 · 0 评论 -
ThreadLocal源码原理分析
What(什么是ThreadLocal)俗称线程本地变量,是一种能够在当前线程,只拿到该线程所设置的值的工具。比如一个字符串,A线程设置了“abc”,B线程设置了“def”,希望两个线程再读取时,分别是,A读取到“abc”,B读取到是“def”。Why(为什么要使用它?)想让不同线程,使用同一个变量,但是通过它来读取的值是各自设置的值。How(怎么用?)ThreadLocal<String> tl = new ThreadLocal<>();// thread1tl原创 2021-06-17 11:24:06 · 87 阅读 · 0 评论 -
Java中的反射
WhatWhyHow获取字节码对应的对象获取构造方法获取属性获取方法Car类源码Sample以电脑运行为例WhatJAVA反射机制是在运行状态中,对任意一个类,都能知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取以及动态调用对象的方法的功能成为java语言的反射机制。Why在不更改源代码的情况下,提供程序的扩展性,使开发更简单(接口加配置文原创 2017-08-22 10:11:00 · 270 阅读 · 0 评论 -
一张图看懂try-catch-finally的执行顺序
什么是try-catch-finally是java中用于捕获异常,并处理异常的块。try块中放置的是可能出现异常的代码catch块中放置的是可能的异常finally块中放置的是一定会执行的代码一张图看懂执行顺序使用场景(数据库操作为例)当访问数据库时,可能在执行过程中发生错误,此时通过try-catch块进行处理DataBase db;try { User user = ...原创 2018-10-18 18:19:03 · 588 阅读 · 0 评论