
Java基础
文章平均质量分 69
ww !
这个作者很懒,什么都没留下…
展开
-
线程池的工作原理与源码解读及各常用线程池的执行流程图
其中使用到了线程池的内容下面给大家介绍下线程池的工作原理与源码解读及各常用线程池的执行流程图 有时候花了大把时间去看一些东西却看不懂,是很 “ 蓝瘦 ” 的,花时间也是投资。 本文适合: 曾了解过线程池却一直模模糊糊的人了解得差不多却对某些点依然疑惑的 随着cpu核数越来越多,不可避免的利用多线程技术以充分利用其计算能力。所以,多线程技术是服务端开发人员必须掌握的技术。 线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就引入了线程池技术,避免频繁的线程创.转载 2021-06-22 16:17:49 · 918 阅读 · 0 评论 -
关于 锁的四种状态与锁升级过程 图文详解
一、前言 锁的状态总共有四种,级别由低到高依次为:无锁、偏向锁、轻量级锁、重量级锁,这四种锁状态分别代表什么,为什么会有锁升级?其实在 JDK 1.6之前,synchronized 还是一个重量级锁,是一个效率比较低下的锁,但是在JDK 1.6后,Jvm为了提高锁的获取与释放效率对(synchronized )进行了优化,引入了 偏向锁 和 轻量级锁 ,从此以后锁的状态就有了四种(无锁、偏向锁、轻量级锁、重量级锁),并且四种状态会随着竞争的情况逐渐升级,而且是不可逆的过程,即不可降级,也就是说只能进行锁.转载 2021-06-22 10:33:35 · 822 阅读 · 0 评论 -
死锁的原因及解决方案
死锁的概念 死锁是指两个或两个以上的进程(线程)在运行过程中因争夺资源而造成的一种僵局,若无外力作用,这些进程(线程)都将无法向前推进 ,这时就形成了死锁。处于死锁状态的进程称为死锁进 比如一扇门,你要出我要进,你在等我让,我在等你让,这时就陷入了死循环,就形成了死锁。 死锁产生的原因 先来看两个概念: 可抢占资源和不可抢占资源 可抢占资源:指某进程在获得这类资源后,该资源可以再被其他进程或系统抢占。对于这类资源是不会引起死锁的。CPU 和主存均属于可抢占...原创 2021-06-03 13:18:25 · 947 阅读 · 0 评论 -
垃圾回收机制算法
什么是垃圾回收机制 垃圾回收机制就是,不定时,向堆内存中清理不可达对象。 垃圾回收可以有效的防止内存泄漏,有效的使用空闲的内存。 内存泄漏是指改内存空间使用完毕之后未被回收,在不涉及复杂数据结构的一般情况下,java的内存泄漏表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们优势也将其称为”对象游离“。 内存泄漏的定义:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。 手动GC回收 public class JVMD...转载 2021-05-21 09:39:59 · 245 阅读 · 0 评论 -
JAVA线程池的种类
常用的JAVA线程池有以下几种类型: 1、newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 这种类型的线程池特点是: 工作线程的创建数量几乎没有限制(其实也有限制的,数目为Interger. MAX_VALUE), 这样可灵活的往线程池中添加线程。 如果长时间没有往线程池中提交任务,即如果工作线程空闲了指定的时间(默认为1分钟),则该工作线程将自动终止。终止后,如果你又提交了新的任务,则线程池重新创建一个工作线程。 在使.转载 2021-05-20 18:13:46 · 895 阅读 · 0 评论 -
synshronzed 1.6之后的提升
synchronized是Java里一个重量级的操作,但是同时我们又说从JDK1.6之后synchronized性能有了大幅上升,那,为什么JDK1.6之后它的性能就大幅提升了呢? 一、synchronized的实现原理 在Java中最基本的互斥同步手段就是synchronized关键字,synchronized关键字经过编译之后,会在同步块的前后分别形成monitorenter和monitorexit这两个字节码指令,这两个指令都需要一个reference类型的参数来指明要锁定和要解锁的对象。 如.转载 2021-05-20 17:53:48 · 453 阅读 · 0 评论 -
HashMap之1.7和1.8的区别
HashMap是我们开发中经常使用到的集合,jdk1.8相对于1.7底层实现发生了一些改变。原创 2021-05-08 15:30:46 · 2711 阅读 · 0 评论 -
三大集合
70、List、Set、Map三者的区别? List(对付顺序的好帮手): List 接口存储一组不唯一(可以有多个元素引用相同的对象)、有序的对象。 Set(注重独一无二的性质):不允许重复的集合,不会有多个元素引用相同的对象。 Map(用Key来搜索的专业户): 使用键值对存储。Map 会维护与 Key 有关联的值。两个 Key可以引用相同的对象,但 Key 不能重复,典型的 Key 是String类型,但也可以是任何对象。 71、ArrayList 和 LinkedList 的区别。 ArrayLis原创 2021-05-08 14:50:33 · 173 阅读 · 0 评论 -
【线程】sleep()方法和await()方法有什么区别?sleep()和yield()方法有什么区别?
sleep()是使线程暂停执行一段时间的方法。 await()也是一种使线程暂停执行的方法。 当线程交互时,如果线程对一个同步对象x发出wait()调用请求,那么该线程会暂停执行,被调对象进入等待状态,直到被唤醒或者等待超时。 具体来说sleep()方法和await()方法的区别主...转载 2021-05-07 23:02:25 · 1045 阅读 · 0 评论 -
集合各实现类的底层实现原理
ArrayList实现原理要点概括 参考文献: http://zhangshixi.iteye.com/blog/674856l https://www.cnblogs.com/leesf456/p/5308358.html ArrayList是List接口的可变数组非同步实现,...转载 2021-05-06 22:50:25 · 124 阅读 · 0 评论 -
Java中子类和父类相关方法的执行顺序(一)
java new一个类对象,类中各部分执行顺序: 静态代码块—非静态代码块—构造函数—一般方法。 public class father { private String name; father(){ System.out.println("--父类的无参构造函数--"); } father(String name){ ...原创 2020-05-08 16:06:55 · 3204 阅读 · 0 评论 -
Java中子类和父类相关方法的执行顺序(二)
无意中看到下面一个题目,大家一起来看看最后的输出结果是什么。反正我看完之后,用IDE测试后感觉知识点得到巩固了。 `/** @Description 函数执行顺序测试 @Author longwei @Date 2020/5/8 11:56 */ public class Tes { public static void main(String [] args){ System.out...转载 2020-05-08 15:37:52 · 362 阅读 · 0 评论