在只有双重检查锁,没有volatile的懒加载单例模式中,由于指令重排序的问题,我确实不会拿到两个不同的单例了,但我会拿到“半个”单例。 而发挥神奇作用的volatile,可以当之无愧的被称为Java并发编程中“出现频率最高的关键字”,常用于保持内存可见性和防止指令重排序。 保持内存可见性 内存可见性(Memory…
”继承“是Java的面向对象学习过程中的大难题,原因有二: ”is-A“的关系本身就不好理解 Java中的extends“扩展”与面向对象中的“继承”inheritance不是一一对应的。…
ThreadLocal也叫“线程本地变量”、“线程局部变量”: 其作用域覆盖线程,而不是某个具体任务; 其“自然”的生命周期与线程的生命周期“相同”(但在JDK实现中比线程的生命周期更短,减少了内存泄漏的可能)。 ThreadLocal代表了一种 线程与任务剥离 的思想,从而达到 线程封闭…
之前在源码|从串行线程封闭到对象池、线程池中挖坑说要精炼一篇短文。本文填坑,总结线程池的种类、应用场景、ThreadPoolExecutor参数含义,最后简单介绍如何估算线程池大小。 JDK版本:oracle java 1.8.0_102 不同语言、同一语言不同库的线程池实现有差别,不要拘泥于Java这一种,没事看看work…
本教程介绍了如何使用Three.js创建一个令人印象深刻的个人作品集网站,包括3D动画、摄像机和光照等概念。 通过使用Three.js的几何图形、材质和网格来实现对象的动画效果,以及通过添加灯光和纹理等元素来增加真实感。 同时介绍了加载图片和贴图以及使用辅助工具进行调试和优化的方法,最终构建了一个令人惊叹的3D作品集网站。 00:00…
分布式事务是分布式系统中关键的一部分,其目的是保证分布式系统中所有节点的事务一致性。这在现代大规模并发应用中尤其重要。在Java中,有几种主要的实现分布式事务的方式,这篇文章将详细介绍其中几种,并为每种方式提供一个业务场景以及示例代码。 一、两阶段提交协议 (2PC) 两阶段提交协议是一种经典的分布式事务处理方法。它包含两个阶段:预提交阶段和提交阶段。…
引言 Springboot 2.0将 HikariCP 作为默认数据库连接池这一事件之后,HikariCP 作为一个后起之秀出现在大众的视野中。HikariCP 是在日本的程序员开源的,hikari日语意思为“光”,HikariCP 也以速度快的特点受到越来越多人的青睐。 今天就让我们来探讨一下HikariCP为什么这么快? 连接池技术…