线程基础知识 04 synchronized锁的四种状态和升级
摘要:转https://www.cnblogs.com/mingyueyy/p/13054296.html 1 轻量级锁和重量级锁简要说明 线程调度本来是由操作系统来管理的。现在,操作系统上跑了一个虚拟机JVM,JVM可以启动JVM级别的线程,实际上还是落实到操作系统级别的线程。 JVM自己能够搞定的锁叫
阅读全文
线程基础知识09-JAVA的可见性和有序性问题
摘要:1 CPU中的三级缓存及可见性问题 1.1 简介 1.2 缓存行Cacheline 1.3 可见性问题-缓存一致性协议 2 JAVA中的有序性问题 2.1 指令重排简介 2.2 as-if-serial语义 2.2.1 数据依赖 2.2.2 控制依赖 2.3 指令重排示例 2.3.1 代码 2.3.
阅读全文
线程基础知识-CountDownLatch
摘要:转:https://blog.csdn.net/hbtj_1216/article/details/109655995 1 概念1.1 简介 CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经
阅读全文
ThreadLocal
摘要:1 简介 ThreadLocal提供了线程内存储变量的能力。 2 ThreadLocal的应用场景 如下图,方法1调用方法2,方法2调用方法3,方法3调用方法4 如果我们想要在方法4中使用方法1中的一个变量sa,可以怎么做? 1)通过参数传递 在某些情况下可以,但是如果中间某个方法(如method2
阅读全文
线程基础知识11-CAS+自旋锁
摘要:1.CAS是什么(CompareAndSet) CAS(Compare and swap)比较和替换是设计并发算法时用到的一种技术。简单来说,比较和替换是使用一个期望值和一个变量的当前值进行比较,如果当前变量的值与我们期望的值相等,就使用一个新值替换当前变量的值。 2.CAS的使用场景(原子类) 我
阅读全文