- 博客(8)
- 资源 (1)
- 收藏
- 关注
原创 Synchronized原理(轻量级锁篇)
Synchronized原理(轻量级锁篇)简述介绍轻量级锁是JDK1.6之中加入的新型锁机制,它名字中的“轻量级”是相对于使用操作系统互斥量来实现的传统锁而言的,因此传统的锁机制就称为“重量级”锁。首先需要强调一点的是,轻量级锁并不是用来代替重量级锁的,它的本意是在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能消耗。轻量级锁能够提升程序性能的依据是“对绝大部分的锁,在整个同步周期内都不存在竞争”,注意这是经验数据。需要了解的是,轻量级锁所适应的场景是线程交替执行同步块的场合,
2021-09-26 18:20:16
10508
18
原创 Synchronized原理(偏向锁篇)
Synchronized原理(偏向锁篇)传统的锁机制传统的锁依赖于系统的同步函数,在linux上使用mutex互斥锁,最底层实现依赖于futex,这些同步函数都涉及到用户态和内核态的切换、进程的上下文切换。这种状态转换需要耗费处理器时间。如果同步代码块中的内容过于简单,状态转换消耗的时间有可能比用户代码执行的时间还要长,这种依赖于操作系统Mutex Lock所实现的锁我们称之为**“重量级锁”**。对于加了synchronized关键字但运行时并没有多线程竞争,或两个线程接近于交替执行的情况,使用传统
2021-09-24 17:39:28
4215
15
原创 java实现二叉树的前序、中序、后序以及层序遍历
java实现二叉树的前序、中序、后序以及层序遍历前言:本文主要探究二叉树遍历的算法,关于二叉树的基础知识可以去看我的这篇文章:《JAVA实现平衡二叉树(AVL)》数据构建我们先来构建一颗二叉树的基本模型先序遍历规则:先根再左后右(所有子系也遵循该规则)顺序:ABDGEHCF作用:在第一次遍历到节点时就执行操作,一般只是想遍历执行操作(或输出结果)可选用先序遍历。流程图递归实现/** * 前序遍历-递归 * 顺序:根-左-后 * * @param node */publ
2021-09-07 23:08:36
660
原创 ReentrantLock与AQS(一)
AQS全称是 AbstractQueuedSynchronizer(抽象队列同步器),是Java并发包中加锁和释放锁的核心组件。使用AQS实现的工具类有ReentrantLock、ReentrantReadWriteLock、Semaphore等等CAS理论在了解AQS之前需要先熟悉下CAS,Compare-And-Swap,是一条CPU并发原语,用于判断内存中某个位置的值是否没有被修改过,如果是则更改为新的值,这个过程是原子的。具体的操作流程先去读一次内存地址中的旧值,保存下来。在准备写之前
2021-08-19 18:39:13
480
1
原创 HashMap元素的插入流程以及扩容操作
数据结构与算法之HashMap1.元素的存取流程1.hash函数前言本文主要探讨HashMap计算下标使用到的算法,对于HashMap的其它知识不做详细概述,有关HashMap的简单介绍可以看这篇文章《HashMap的构成与大小的确定》。1.元素的存取流程以Java8为参考,HashMap插入元素的流程为:判断当前容量大小是否为空,如果为空(未设置容量初始值),则把容量扩充为16。获取key的hashCode,对hashCode进行扰动处理,计算出元素的下标。根据下标判断有无hash碰撞,如
2021-08-13 01:52:07
3746
2
原创 HashMap的构成与大小的确定
数据结构与算法之HashMap1.hashMap如何构建大小2.hashMap是什么时候开始申请大小的3.自定义hashMap该如何设置大小1.hashMap如何构建大小2.hashMap是什么时候开始申请大小的3.自定义hashMap该如何设置大小...
2021-08-07 19:21:42
1193
原创 JAVA实现平衡二叉树(AVL)
数据结构与算法-平衡二叉树(AVL) 1.平衡二叉树简介1.1什么是平衡二叉树1.2平衡二叉树的作用2.关键词概述3.JAVA代码实现3.1节点类(TreeNode)前言本文主要探讨平衡二叉树的实现过程,对于原理还请自行翻阅其它资料进行学习1.平衡二叉树简介1.1什么是平衡二叉树了解平衡二叉树之前我们首先需要知道什么是树结构. 树结构树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。树的定义:把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它
2021-08-05 12:37:54
4540
原创 String源码中的hashCode算法
学习String源码中的hashCode算法目录1.hashCode的作用2.了解二进制计算符3.String源码hashCode算法的实现目录1.hashCode的作用2.了解二进制计算符<< : 左移运算符,num << 1,相当于num乘以2 低位补0>> : 右移运算符,num >> 1,相当于num除以2 高位补0>>> : 无符号右移,忽略符号位,空位都以0补齐 % : 模运算 取余^ : 位异或 第一个
2021-08-05 01:51:58
2284
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人