
并发编程
旺仔小秃头ξ( ✿>◡❛)
这个作者很懒,什么都没留下…
展开
-
【并发编程】 JMM
jmm是Java内存模型,它确保了在并发编程中,不同线程对共享变量的访问能够按照一定的规则进行,以避免内存一致性错误。在 JDK1.2 之前,Java 的内存模型实现总是从(即共享内存)读取变量,是不需要进行特别的注意的。而在当前的 Java 内存模型下,线程可以把变量保存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成。原创 2024-07-20 09:00:00 · 272 阅读 · 0 评论 -
【并发编程】CAS
CAS,即Compare-And-Swap,是一种用于实现无锁编程的原子操作。它通常用于多线程环境中,确保对共享数据的安全访问和修改。CAS操作包含三个参数:内存位置(V)、预期原值(A)和新值(B)。:首先,CAS检查内存位置的当前值是否与预期原值A相等。:如果当前值与预期原值相等,CAS将内存位置的值更新为新值B。:CAS操作返回一个布尔值,指示操作是否成功。如果成功,返回true;如果失败,返回false。原创 2024-07-19 15:34:26 · 204 阅读 · 0 评论 -
[并发编程] synchronized锁的膨胀
锁膨胀的过程是自动的,JVM 会根据线程的争用情况来决定是否需要升级锁。锁主要存在四种状态,依次是:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态,他们会随着竞争的激烈而逐渐升级。(Lock Inflation)是指锁从一种较轻量级的锁状态逐渐升级到更重量级的锁状态的过程。:当线程第一次访问同步代码块时,JVM 会将锁标记为偏向锁,并偏向第一个获取锁的线程。:在轻量级锁和重量级锁之间,JVM 可能会尝试自旋锁。:如果轻量级锁竞争失败,或者线程在轻量级锁状态下被阻塞,JVM 会将锁升级为重量级锁。原创 2024-07-19 15:13:42 · 712 阅读 · 0 评论