前言:对于一个控制锁的业务场景来说,有简单的也有复杂的,最简单的就是判断一个对象是否是null。再复杂点就是对于一个复杂条件的判断。判断的话如果是一个boolean类型,gu...
前言:对于一个控制锁的业务场景来说,有简单的也有复杂的,最简单的就是判断一个对象是否是null。再复杂点就是对于一个复杂条件的判断。判断的话如果是一个boolean类型,gu...
每期总结一个小的知识点和相关面试题,嘿嘿,又来和大家共同学习了。 GUC中有个类我们用的比较少,但是他确是很多类中不可或缺的成员。他就是Condition。 从字面意思理解就...
前言:对于微服务来说,如果我们要实现一个web服务,大部分人可能直接用springboot的spring-boot-starter-web了。我们知道spring-boot-...
Redis占用内存大小 1、通过配置文件配置 通过在Redis安装目录下面的redis.conf配置文件中添加以下配置设置内存大小 redis的配置文件不一定使用的是安装目录...
Object.wait() 在进行wait()之前,就代表着需要争夺Synchorized,而Synchronized代码块通过javap生成的字节码中包含monitoren...
在java的锁机制中,公平和非公平的参考物是什么,个人而言觉得是相对产生的结果而立,简单的来说,如果一个线程组里,能保证每个线程都能拿到锁,那么这个锁就是公平锁。相反,如果保...
读写锁的使用 读写锁在 Java 中是 ReentrantReadWriteLock,使用方式是: ReentrantReadWriteLock和ReentrantLock的...
前言:第一次写源码分析类文章,有点忐忑,还是硬着头皮上了。之前几篇线程池文章主要是讲解线程池使用场景,这篇文章我以非代码方式讲解源码,这个估计没人这么干过吧!哈哈。 说实话一...
volatile 关键字只能用于修饰变量,无法用于修饰方法。并且 volatile 只能保证可见性,但不能保证操作的原子性。 在具体编程中体现为:volatile 只能保证基...
synchronized的锁升降级 Java SE1.6为了减少获得锁和释放锁所带来的性能消耗,引入了“偏向锁”和“轻量级锁”, 所以在Java SE1.6里锁一共有四种状态...
前言 在做分布式链路追踪系统的时候,需要解决异步调用透传上下文的需求,特别是传递traceId,本文就线程池透传几种方式进行分析。 其他典型场景例子: 分布式跟踪系统 或 全...
线程池在开发中一定会用到,如果能像golang一样,java语言也有协程,也许java程序员就少了一种包袱。 回归正题,我们聊下到底有哪些线程池的使用方式,总结有以下几种。 ...
线程状态的定义 可见在 JDK 中定义的线程状态总共六种,各状态在特定条件下可以转换,其组成了一个线程的生命周期,为了方便理解,对其状态和转换整理成了列表和状态图的形式。 状...
ThreadPoolExecutor介绍 通过 ThreadPoolExecutor 创建线程池,API 如下所示: 先来解释下其中的参数含义(如果看的比较模糊可以大致有个印...
常见的垃圾回收算法有: 标记-清除算法、复制算法、标记-整理算法、分代收集算法 标记-清除算法 标记—清除算法包括两个阶段:“标记”和“清除”。 标记阶段:确定所有要回收的对...
细节方面不同 G1 在压缩空间方面有优势。 G1 通过将内存空间分成区域(Region)的方式避免内存碎片问题。 Eden, Survivor, Old 区不再固定、在内存使...
什么是JIT JIT 是 just in time 的缩写, 也就是即时编译编译器。 在运行时 JIT 会把翻译过的机器码保存起来,以备下次使用,因此从理论上来说,采用该 J...