JAVA
文章平均质量分 93
Mr.姚先森
软件初学者
展开
-
synchronized与Lock的区别
在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐述。本文先从synchronized的缺陷讲起,然后再讲述java.util.concurrent.locks包下常用的有哪些类和接口,最后讨论以下一些关转载 2021-01-30 16:29:45 · 528 阅读 · 0 评论 -
volatile是怎么保证可见性和有序性的,为什么无法保证原子性
在了解volatile之前,先认识一下JMM内存模型和并发编程的三大特性! 1. JMM内存模型 Java内存模型(Java Memory Model简称JMM)是一种抽象的概念,并不真实存在,它描述的是一组规则或规范。 与JVM内存模型不同的是,JMM规定所有变量都存储在主内存,主内存是共享内存区域,所有的线程都可以访问。当线程有对这个变量有操作时,必须把这个变量从主内存复制一份到自己的工作空间中进行操作,操作完成后,再把变量写回主内存,不能直接操作主内存的变量。不同的...转载 2021-01-30 16:19:48 · 433 阅读 · 0 评论