自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 (总结)Java多线程_JUC原子类实现

CAS+volatile 实现JUC原子类volatile关键字在以下情况下无法保证原子性:对变量的写操作不依赖于当前值。该变量没有包含在具有其他变量的不变式中因此多线程情况下使用JUC包下的 atomic 中的原子类来确保线程安全;而原子类的实现依赖于 volatile关键字+CAS操作;volatile为什么不能保证原子性以自增操作 i++ 为例:首先,i++ 操作并不是原子性的,可以分为:①读取i;②cpu进行计算 i+1;③计算结果 赋值给 i;假设有两个线程 A &

2020-09-24 17:08:18 203

转载 (总结)Java基础_HashMap

美团技术团队:Java 8系列之重新认识HashMap

2020-09-23 16:36:00 117

原创 (总结)JVM基础_对象创建过程or调用new指令之后发生了什么

对象创建过程,new发生了什么1.对象创建过程:遇到new指令,首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如没有,则必须先执行类加载过程;类加载类加载检查通过后,为新生对象分配内存,对象所需内存大小在类加载完成后即可确定;内存分配原则 & 对象内存布局内存分配完成后,JVM将分配到的内存空间初始化为零值(不包括对象头),如果使用TLAB,这个过程也可以在TLAB(并发条件下如何保证线程安全)分配时进行:这一步操

2020-09-18 22:16:56 176

原创 (总结)Java多线程_ThreadLocal

(总结)Java多线程_ThreadLocal使用方式使用ThreadLocal类来定义线程内部的共享变量,在多线程环境下,可以保证各个线程之间的变量互相隔离、相互独立。ThreadLocal实例通常来说都是private static类型的,它们希望将状态与线程进行关联。这种变量在线程的生命周期内起作用,可以减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。通过set()/get()方法来进行变量值的设定和取出;线程中可以创建多个ThreadLocal变量,存储在ThreadLoca

2020-09-17 15:26:09 129

原创 (总结)Java多线程_多线程继承结构

(总结)Java多线程_多线程继承结构java.lang.Thread可以将Runnable的继承类实例(可以采用lambda表达式实现匿名内部类,重写run()方法)传入Thread的构造方法中来实现多线程启动;java.util.concurrent以下除了接口Runnable位于java.lang.Thread中,其余接口和类位于java.util.concurrent中:Callable<V>接口,获取多线程处理后的返回值<V>;FutureTask<

2020-09-15 12:58:09 201

原创 (总结)Java集合_2.Map&Set

(总结)Java集合_2.Map&Set类继承结构:Map详见:美团技术团队:Java 8系列之重新认识HashMap详解 HashMap 中的 hash 函数jdk1.8 HashMap工作原理和扩容机制(源码解析)SetJAVA集合Set之HashSet详解Java Set集合详解及Set与List的区别Set集合是继承Collection的接口,是一个不包含重复元素的集合实现类有三个:HashSet():底层为HashMap()实现, 实际上就是利用map的ke

2020-09-14 22:36:02 109

原创 (总结)Java集合_1.List

(总结)Java集合_1.List参考:面试题 ArrayList与LinkedList的区别ArrayList和LinkedList对比(性能分析和实现等)类继承结构:ListArrayList与LinkedList的区别继承: ArrayList类继承自AbstractList抽象类,实现了List接口;LinkedList类继承了AbstractSequentialList抽象类;同时LinkedList也继承了Deque接口,能够实现双端队列;数据结构: Arraylist

2020-09-14 21:31:51 234

转载 (总结)Java基础_拷贝

(总结)Java基础_拷贝转自羊哥微信公众号,收藏学习一下:一个工作三年的同事,居然还搞不清深拷贝、浅拷贝…值类型 vs 引用类型这两个概念的准确区分,对于深、浅拷贝问题的理解非常重要。正如Java圣经《Java编程思想》第二章的标题所言,在Java中一切都可以视为对象!所以来到Java的世界,我们要习惯用引用去操作对象。在Java中,像数组、类Class、枚举Enum、Integer包装类等等,就是典型的引用类型,所以操作时一般来说采用的也是引用传递的方式;但是Java的语言级基础数据类型,

2020-09-14 15:36:17 80

原创 (总结)Java基础_类继承结构

(总结)Java基础_类继承结构多线程类继承结构:IO流类继承结构:容器类继承结构:

2020-09-14 15:02:15 131

原创 (总结)Java相关_关键字总结

(总结)Java相关_关键字总结final、volatile、this、super、static借鉴:Guide哥文章:final,static,this,super 关键字总结1.finalfinal关键字可以用于三个地方:用于修饰类被final关键字修饰的类不能被继承;final类中的所有成员方法都会被隐式的指定为final方法;类属性被final关键字修饰的类属性,子类就不能重新赋值;对于一个final变量如果是基本数据类型变量,数值一旦在初始化之后就不能更改,如果是

2020-09-14 14:37:43 164 1

原创 hashCode()与equals(),hashcode应用

hashCode()与equals()1.hashCode()的作用hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是 用来在散列存储结构中确定对象的存储地址的;hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode() 函数。虽然,每个Ja

2020-09-14 11:01:19 82

原创 解析字符串常量池,运行时常量池之间的关系,及intern方法

解析字符串常量池,运行时常量池之间的关系,及intern方法学习JVM过程中,对于这部分内容有些疑惑,查阅资料时,发现说法各不相同,有些博文甚至自相矛盾,通过《深入理解Java虚拟机》和几篇觉得有借鉴意义的博文,和一些代码实测,整理出以下在我看来逻辑通顺的内容,错误之处在所难免,希望能够得到指正。参考文章:美团技术团队深入解析String#internCSDN博客:字符串常量池、class常量池和运行时常量池Java中的常量池(字符串常量池、class常量池和运行时常量池)##1.字符串常量池(

2020-08-27 21:07:59 807

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除