![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 82
大胆的果子
这个作者很懒,什么都没留下…
展开
-
接口和抽象类的区别
接口和抽象类有什么区别 你选择使用接口和抽象类的依据是什么? 接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接...转载 2020-09-15 22:28:50 · 178 阅读 · 0 评论 -
HashMap源码分析
简介HashMap是我们在java开发中常用的一种集合。HashMap最大的特点是在不考虑哈希冲突时,它的添加、查找、删除等操作只用O(1)的时间复杂度就能完成。本片文章我将介绍HashMap的源码,以此来了解HashMap是如何实现时间复杂度O(1)的查找删除操作的。源码分析基本参数介绍首先我们来看下HashMap用于存储的部分//是一个Node数组,初始值为0,只有在第一次put时才进行初始化,并且长度一定为2的n次幂。transient Node<K,V>[] table;原创 2020-06-19 16:26:56 · 115 阅读 · 0 评论 -
大厂面试常考——java线程池原理详解
导论在开发中,我们会遇到需要多个线程执行的任务。如果我们每次都通过new Thread来创建线程执行任务的话,在线程很多的情况下,是会非常销毁资源,影响程序运行的。Java提供了线程池Executor来帮助我们处理需要用到多个线程的情况,线程池可以用来存储多个线程,通过创建线程池,我们可以有以下几个好处:重用线程池的线程,避免了因为重复创建、销毁线程而到来的性能开销。能够控制线程池中的最大并发数,避免了线程间因为互相抢占系统资源而导致的阻塞现象。能够对线程进行简单的管理,并且提供了定时执行、循环执原创 2020-05-25 18:05:32 · 298 阅读 · 0 评论 -
面试常考volatile全方位讲解
volatile是一个与多线程访问时常用的类,相比于sychronized和lock,volatile的优势是它更加的轻量级,不会引起线程上下文的调度和切换,但volatile的同步性较差,在某些使用时也容易出错。本片文章我将主要volatile的面试常用知识点。volatile的作用1.保证了被修饰变量的内存可见性。2.禁止指令重排序。内存可见性和重排序的概念说到这两个东西,就必须先来聊一聊java内存模型JMM。JMM是一种抽象模型,用来使java在各种操作系统和硬件的都能有一致的访问效果。我原创 2020-05-23 18:23:53 · 311 阅读 · 0 评论 -
WeakReference是什么,什么时候要使用WeakReference
一个对象要被回收,需要满足两个条件:1.没有被任何对象引用2.GC被执行了强引用(StrongReference)Object o = new Object();在现实情况中,当我们创建对象时都采用的是上面的方式,此时,引用会保存在栈中,而引用的内容会被保存在堆中。只要这种强引用还存在,GC执行时,即使是在内存不足时,JVM宁愿抛出OutofMemoryError来终止程序,也不会回收...原创 2020-02-11 18:29:48 · 1845 阅读 · 0 评论