![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
闻而不名
这个作者很懒,什么都没留下…
展开
-
多线程--ThreadLocal
目录1.ThreadLocal原理2.ThreadLocal源码分析3.ThreadLocal用途及适用场景4.总结1.ThreadLocal原理ThreadLocal叫做线程本地存储,它为变量在每个线程中都创建一个副本,那么每个线程可以访问自己内部的副本变量。在多线程中,ThreadLocal可以令线程在访问变量时具有隔离性,保证数据在线程间的安全性。2.Thread...原创 2019-02-27 16:07:46 · 276 阅读 · 0 评论 -
多线程--join
目录1.join的作用2.join的位置3.join实现原理1.join的作用join可以使线程间的并行执行变成串行执行,也就是同步执行。2.join的位置join方法必须在线程start方法调用之后调用才有意义。3.join实现原理join方法是通过调用线程wait(long s)方法来达到同步的,使其等待s秒后自动唤醒。其源代码如下:public fi...原创 2019-02-27 20:29:42 · 211 阅读 · 0 评论 -
多线程--volatile
目录1.volatile关键字的两层含义2.volatile关键字的原理和实现机制3.volatile关键字的使用场景4.volatile关键字与synchronized关键字的比较1.volatile关键字的两层含义(1)保证了不同线程对这个变量进行操作的可见性。(2)禁止进行指令重排序,能在一定程度上保持有序性。2.volatile关键字的原理和实现机制vo...原创 2019-02-27 20:31:28 · 276 阅读 · 0 评论 -
多线程--synchronized
目录1.synchronized关键字的概念2.synchronized关键字的使用方式1.synchronized关键字的概念synchronized解决的是多个线程之间访问资源的同步性,synchronized可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。java早期版本,synchronized属于重量级锁,效率低下,因为监视器锁依赖于底层操作系统的Mutex...原创 2019-02-27 20:31:40 · 235 阅读 · 0 评论 -
接口的作用
目录1.接口的使用规范2.接口的作用3.实例1.接口的使用规范(1)不能定义变量,但可以定义常量,为全局静态常量,且必须在定义时指定初始值,默认为public static final修饰。(2)定义的方法都为全局抽象方法,默认为public abstract修饰。(3)不能进行实例化,不能有构造。(4)一个接口可以继承多个接口,但不能继承类。(5)接口的实现类...原创 2019-01-02 20:33:04 · 1014 阅读 · 0 评论 -
多态的表现形式
目录 1.多态的定义2.多态的三种形式3.多态的编译和运行4.多态的转型5.多态的好处6.多态的弊端1.多态的定义多态、封装和继承是面向对象的三大特性。多态需满足三个条件:(1)有继承;(2)有重写;(3)有父类引用指向子类对象。最终多态体现为父类引用可以指向子类对象:父类类型 变量名 = new 子类类型()。2.多态的三种形式(1)普通类多态定义的格...原创 2019-01-02 16:14:53 · 12159 阅读 · 2 评论 -
Java(JDK1.8)中HashMap底层原理实现及源码分析
1.实现原理简述HashMap实际上是一个元素为链表的数组。当添加一个元素时,先计算元素key的hash值,用来确定插入数组中的位置,也存在hash值会相等的情况,则会插入到同一位置,形成链表结构,当链表长度达到一定长度时,链表会转换成红黑树,这样会减少查询时间。其数据结构简单归纳为数组(位桶)+链表+红黑树。2.与JDK1.6、1.7版本比较(1)数据结构更佳:JDK1.6、1.7采...原创 2019-01-03 21:43:50 · 1024 阅读 · 0 评论 -
堆和栈
目录1.内存分配2.内存溢出3.溢出实例4.数组内存分配 1.java内存分配Java把内存分为两种:(1)栈内存:存放基本类型变量和对象的引用变量;(2)堆内存:存放新创建的对象和数组,由垃圾回收机制管理。2.内存溢出(1)栈内存溢出:进行递归调用,持续增加栈深度,直到栈内存不够分配。(2)堆内存溢出:循环创建对象或者创建足够大的对象。3.溢出实例(1...原创 2019-01-03 21:44:32 · 141 阅读 · 0 评论 -
List和Set的特点
目录1 List和Set2 ArrayList和LinkedList、Vector3 HashSet和TreeSet1 List和Set(1)共同特点:都继承Collection。(2)元素特点:List有序,元素可重复;Set无序(TreeSet为有序),元素不可重复。(3)性能不一致:List检索效率高,删除和插入效率低;Set检索效率低,删除和插入效率高。2...原创 2018-12-10 17:04:32 · 1290 阅读 · 0 评论 -
sleep和wait的区别
目录1、所属分类2、对象锁的控制3、唤醒机制4、异常处理5、使用场景1、所属分类sleep是Thread的方法,wait是Object的方法。2、对象锁的控制sleep监控状态依然保持,不会释放对象锁,不会影响其它进程对象的运行;wait释放对象锁,使其他线程可以使用同步控制块或者方法。3、唤醒机制sleep为静态方法,使当前线程处于睡眠状态,到设...原创 2018-12-20 17:46:08 · 2225 阅读 · 0 评论 -
String、StringBuffer和StringBuilder区别
目录1、运行效率2、线程安全3、应用场景 1、运行效率String是字符串常量,当对创建的常量进行“追加”时,其实是先创建新常量,然后java垃圾回收机制对旧常量进行回收,导致效率低下;而 StringBuilder、StringBuffer是字符串变量,不需要重新创建和回收,且StringBuffer具有同步性,效率低于StringBuild...原创 2018-12-20 17:01:11 · 126 阅读 · 0 评论 -
多线程--wait
目录1.wait的使用2.wait与sleep的比较1.wait的使用(1)使用wait和notify函数来实现线程间(一般为>3的多线程)通信。(2)永远在synchronized的函数或对象中使用wait、notify、notifyAll,不然虚拟机会生成IllegalMonitorStateException。(3)永远在while循环里而不是if语句下使用wa...原创 2019-02-27 20:30:09 · 2520 阅读 · 0 评论