一、线程的 3 种实现方式 在传统的操作系统中,拥有资源和独立调度的基本单位都是进程。在引入线程的操作系统中,线程是独立调度的基本单位,进程是资源拥有的基本单位。在同一进程中,线程的切换不会引起进程切换。在不同进程中进行线程切换,如从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。 根据
Java锁升级 根据上面内容可以知道,synchronized 锁有四种状态:无锁、偏向锁、轻量级锁和重量级锁,下面介绍四种状态和其之间的转换。 无锁 当一个对象被创建之后,还没有线程进入,这个时候对象处于无锁状态,其 Mark Word 中的信息如上表所示。 偏向锁 当锁处于无锁状态时,有一个线程
Java静态代理和动态代理 代理模式 代理模式是常用的 Java 设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正
Copy-On-Write Copy-On-Write(写时复制)是计算机领域相当经典的优化思想。如果问一个 Java 开发者 copy-on-write 有什么作用?他们往往第一反应就是:优雅地解决读多写少场景下的并发问题。 背景 众所周知,多线程环境下会出现 data race 的问题。以 Ja
Java中的锁 Synchronized 升级 (1)引言 在 JDK 1.5 之前,synchronized 的底层实现都是重量级的,借助操作系统底层实现,也称之为 synchronized 为重量级锁。在 JDK 1.5 之后,对 synchronized 进行了各种优化,实现的原理是锁升级的过
图解Java内存模型(JMM) 一、核心定义 Java 内存模型(Java Memory Model,JMM) 是 Java 虚拟机规范定义的并发编程规范。它抽象了线程和主内存之间的关系,规定了从 Java 源代码到 CPU 可执行指令的转化过程中需要遵守的并发原则和规范。 主要目的:简化多线程编程
ReentrantLock 与 synchronized 异同点对比 写在开头 ReentrantLock 是一种独占式的可重入锁,位于 java.util.concurrent.locks 中,是 Lock 接口的默认实现类,底部的同步特性基于 AQS 实现,和 synchronized 关键字类
synchronized 和 volatile 关键字的区别 概述 synchronized 和 volatile 都是 Java 中用于多线程同步的关键字,但它们在作用范围、实现原理、功能特性等方面有着本质的区别。 volatile:轻量级同步机制,主要用于保证变量在多线程之间的可见性。 sync