摘要: 一、方法重写(0verride) 在Java 程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类所有的特征,继承了父类所有的方法和变量。 子类可以定义新的特征,当子类需要修改父类的一些方法进行扩展,增大功能,程序设计者常常把这样一种操作方法称为重写,也可以叫覆写或覆盖。 所以,所谓方法 阅读全文
posted @ 2020-03-16 17:10 sunleejon 阅读(862) 评论(0) 推荐(0) 编辑
摘要: 1 int与Integer的基本使用对比 (1)Integer是int的包装类;int是基本数据类型; (2)Integer变量必须实例化后才能使用;int变量不需要; (3)Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ; (4)Integer的默认值是 阅读全文
posted @ 2020-03-16 16:49 sunleejon 阅读(376) 评论(0) 推荐(0) 编辑
摘要: final, finally, finalize的区别 1 final final是一个修饰符也是一个关键字。 被final修饰的类无法被继承 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改; 如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。 阅读全文
posted @ 2020-03-16 16:43 sunleejon 阅读(165) 评论(0) 推荐(0) 编辑
摘要: "Java 面向对象的三大特征" 面向对象主要由三大特性: 封装 继承 多态 一、封装 1、封装的概念 封装性是面向对象编程的核心思想 指的就是将描述某种实体的数据和基于这些数的操作集合到一起,形成一个封装体 封装的思想保证了类内部数据结构的完整性,使用户无法轻易直接操作类的内部数据,这样降低了对内 阅读全文
posted @ 2020-03-16 16:24 sunleejon 阅读(536) 评论(0) 推荐(0) 编辑
摘要: 1 定义 1.1 基本的ABA问题 在CAS算法中,需要取出内存中某时刻的数据(由用户完成),在下一时刻比较并替换(由CPU完成,该操作是原子的)。这个时间差中,会导致数据的变化。 假设如下事件序列: 线程 1 从内存位置V中取出A。 线程 2 从位置V中取出A。 线程 2 进行了一些操作,将B写入 阅读全文
posted @ 2020-03-15 22:42 sunleejon 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 本文讲解CAS机制,主要是因为最近准备面试题,发现这个问题在面试中出现的频率非常的高,因此把自己学习过程中的一些理解记录下来,希望能对大家也有帮助。 什么是悲观锁、乐观锁?在java语言里,总有一些名词看语义跟本不明白是啥玩意儿,也就总有部分面试官拿着这样的词来忽悠面试者,以此来找优越感,其实理解清 阅读全文
posted @ 2020-03-15 22:21 sunleejon 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 首先来说下synchronize和Lock的区别: 两者都是锁,用来控制并发冲突,区别在于Lock是个接口,提供的功能更加丰富,除了这个外,他们还有如下区别: synchronize自动释放锁,而Lock必须手动释放,并且代码中出现异常会导致unlock代码不执行,所以Lock一般在Finally中 阅读全文
posted @ 2020-03-15 21:14 sunleejon 阅读(463) 评论(0) 推荐(0) 编辑
摘要: volatile的用法 volatile通常被比喻成"轻量级的synchronized",也是Java并发编程中比较重要的一个关键字。和synchronized不同,volatile是一个变量修饰符,只能用来修饰变量。无法修饰方法及代码块等。 volatile的用法比较简单,只需要在声明一个可能被多 阅读全文
posted @ 2020-03-15 19:32 sunleejon 阅读(955) 评论(0) 推荐(0) 编辑
摘要: 我们在工作中或多或少都使用过线程池。但是为什么要使用线程池呢?从它的名称中我们就可以猜到,线程池是使用了一种池化技术(Pooling Technology)。和很多其他池化技术一样,都是为了更高效的利用资源,例如连接池,内存池等。 数据库连接是一种很昂贵的资源,创建和销毁都需要付出高昂的代价。为了避 阅读全文
posted @ 2020-03-14 23:01 sunleejon 阅读(3833) 评论(0) 推荐(0) 编辑
摘要: threadlocal而是一个线程内部的存储类,可以在指定线程内存储数据,数据存储以后,只有指定线程可以得到存储数据,官方解释如下。 大致意思就是ThreadLocal提供了线程内存储变量的能力,这些变量不同之处在于每一个线程读取的变量是对应的互相独立的。通过get和set方法就可以得到当前线程对应 阅读全文
posted @ 2020-03-14 17:04 sunleejon 阅读(568) 评论(0) 推荐(0) 编辑