Java
文章平均质量分 93
峰回路转心不死
梦的边陲风吹不灭,平地一声雷
展开
-
极客时间王争老师跳表SkipList学习
刚开始看王争老师的代码有点不知所措,再看完JDK中的跳表实现后恍然大悟,还是自己太笨,没有找到关键问题之所在。王争老师的代码和JDK中的代码中所使用的数据结构不相同,但是大致思路是一致的。jdk中维护索引节点之间的关系使用指针right, down ,而王政老师使用的是数组,个人认为指针比数组更好理解更清晰。王争老师的代码只用了一种对象Node 就实现了跳表,非常巧妙。原创 2024-02-01 16:13:43 · 773 阅读 · 0 评论 -
StampedLock 锁
StampedLock锁StampedLock 锁概述 StampedLock 锁 概述 StampedLock 是并发包里JDK8新增的一个锁,该锁提供了三种模式的读写控制,当调用获取锁的系列函数式,会返回一个long 型的变量,我们称之为戳记(stamp),这个戳记代表了锁的状态。其中try系列获取锁的函数,当获取锁失败后会返回标记为0的stamp值。当调用释放锁和转换锁的方法时需要传入获取锁时返回的stamp值。 写锁 writeLock : 是一个排它锁 或 独占锁,某时只有一个线程可以获取该锁,原创 2020-12-25 20:14:58 · 135 阅读 · 0 评论 -
Java内存模型 && JVM 内存模型
Java 内存模型是通过各种操作来定义的,包括对变量的读/写操作,监视器的加锁喝释放操作,以及线程的启动和合并操作。JMM为程序中的所有操作定义了一个偏序关系,称之为Happens-Before。 线程内的代码能够按先后顺序执行,这被称为程序次序规则。 对于同一个锁,一个解锁操作一定要发生在时间上后发生的另一个锁定操作之前,也叫做管程锁定规则。 前一个对volatile的写操作在后一个volat...原创 2019-06-15 20:58:32 · 555 阅读 · 0 评论 -
java - ThreadPoolExecutor源码解析
ThreadPoolExecutor源码解析 一、构造方法参数 1.构造方法就不在此赘述,重点关注构造方法种的参数。 参数名 作用 corePoolSize 核心线程池大小 maximumPoolSize 最大线程池大小 keepAliveTime 线程池中超过corePoolSize数目的空闲线程最大存活时间;可以allowCoreThreadTimeOut(true)使...原创 2019-06-17 15:33:25 · 211 阅读 · 0 评论