锁
密码11位
这个作者很懒,什么都没留下…
展开
-
JUC介绍--理解JMM(Java Memory Mode) -> volatile -> 单例模式 -> CAS-> 原子引用 -> Java中的锁
JMM 什么是JMM:Java内存模型,物理上不存在,是一种概念和约定 关于JMM的一些同步约定: 1.线程加锁前,必须读取主存中的最新值到工作内存中 2.线程解锁前,必须把共享变量立刻刷回主存 3.加锁和解锁必须是同一把锁 内存交互的8种操作 内存交互操作有8种,虚拟机实现必须保证每一个操作都是原子的,不可再分的(对于double和long类 型的变量来说,load、store、read和write操作在某些平台上允许例外) lock (锁定):作用于主内存的变量,把一个变量标识为线程独占状态原创 2020-08-25 15:30:30 · 309 阅读 · 0 评论 -
JUC介绍--读写锁
读写锁,是一个更细粒度的锁 一般对资源进行操作时,读取资源允许多线程同时占用;但是写入时为了保证数据安全我们要求只有一个线程操作。针对这种境况,在可重入锁的基础上提供了更加细粒度的锁–读写锁。 //独占锁--写锁 一次只能被一个线程占有 //共享锁--读锁 可以被多个线程占有 public class ReadWriteLockDemo { public static void main(String[] args) { // MyCache myCache = new MyCac.原创 2020-08-22 16:36:47 · 156 阅读 · 0 评论 -
JUC介绍--锁的理解(4组问题阐述锁 )
4组(8个)问题阐述锁 1.标准情况下(sendMsg没有延迟),两个线程先打印发短信还是打电话–>结果:先打印发短信 2.sendMsg延迟4秒的情况下,两个线程先打印发短信还是打电话–>结果:先打印发短信 解答: 这种情况并不是因为代码书写顺序的原因,而是因为有锁的存在; synchronized锁的对象是方法的调用者phone,而两个方法用的是同一个锁,谁先拿到锁就要先执行完毕才会释放给下一个 public class Lock8Question01 { public static原创 2020-08-21 22:45:43 · 185 阅读 · 0 评论