欢迎来到Zgxh的博客
11
07
编译与优化 编译与优化
1. 逃逸分析逃逸是指一个对象在某个方法中被创建后,会被其他方法或其他线程所引用。 方法逃逸:该对象被作为参数传递到其他方法中。 线程逃逸:该对象被关联到其他线程中可以访问到的实例变量中。 线程逃逸的逃逸程度比方法逃逸更高。 如果能证明
2020-11-07
06
06
内存模型 JMM 内存模型 JMM
6. Java 内存模型6.1 并发模型线程间进行通信和同步,可以通过 2 种方式的并发模型来实现: 消息传递并发模型 共享内存并发模型 Java 中,采用的是第二种:共享内存并发模型 6.2 JVM 运行时数据区 方法区 和 堆,
06
7.指令重排 与 happens-before 7.指令重排 与 happens-before
7. 指令重排 与 happens-before指令重排可以在 CPU 闲置(等待变量装载等)时,先执行其他指令,提高性能。分为: 编译器优化重排:编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。 指令并行重排:现代处理
06
8.volatile 关键字 8.volatile 关键字
8. volatile8.0 为什么存在内存可见性问题 -> 缓存一致性问题可见性是指某线程修改了一个变量的值,新值对于其他线程是立即可见的。 为了提高代码执行速度,CPU 先把资源从内存加载到 CPU 缓存中(L1, L2等),但操
06
AQS AQS
11. AQSAQS,AbstractQueuedSynchronizer,抽象队列同步器,是一个抽象类。 是用来构建锁和同步器的框架。基于 AQS 实现的锁: ReentrantLock ReentrantReadWriteLock C
06
进程与线程 进程与线程
0. 进程与线程进程是应用程序在某块独立内存上的运行活动,是系统进行资源分配的基本单位。各个进程之间互不干扰,包括程序段、数据、PCB。 程序段:程序运行的代码; 数据段:程序运行期的相关数据; PCB 进程控制块:描述进程的基本情况和运
06
06
10.CAS 与 原子操作 10.CAS 与 原子操作
10. CAS 与 原子操作10.1 原子性原子操作就是最小的不可拆分的操作,操作一旦开始,就不能被打断,直到操作完成。 要么全部成功,要么全部失败。 原子操作能保证线程安全性。 10.1.1 Java 中的原子类java.util.c
06
06
2.线程组 与 优先级 2.线程组 与 优先级
2. 线程组 与 优先级2.1 线程组 ThreadGroup线程组是一个树状的结构,每个线程组下面可以有很多线程或者线程组。 线程依赖于线程组而存在。 线程组可以统一控制线程的优先级和检查线程的权限。 线程组中的线程只允许访问自己所在线
06
Java 锁分类 Java 锁分类
Java 中的锁 Java 中的并发包: java.util.concurrent , 又叫 JUC。 1. 乐观锁 与 悲观锁 1.1 乐观锁乐观锁总是假设对共享资源的访问没有冲突,线程可以不停地执行,无需加锁,也无需等待。 一旦多个线程
1 / 2