两阶段终止模式
两阶段终止模式什么是两阶段终止模式 核心:[实现正在运行的线程可以被其余线程优雅的终止]{.red} 细节:之前已经借助了中断方法实现了优雅的中断线程,现在将这种中断方式抽象成一种模式来实现 为什么要使用两阶段终止模式 情景:线程之间需要相互通信协作的时候,会出现某些线程想要终止其他线程的情况 方式: stop() 方法 前提:[Stop 方法在 JDK 中已经内废弃了]{.gray} ...
Read more
线程安全-内存模型
内存模型概述:::info 注:这部分的主要目的用于梳理我自己对于内存模型的思路 ::: 先来简单了解为什么需要内存模型? [中断机制]{.red} 背景:[处理器同时只能够执行单个进程,效率非常低下]{.aqua} 解决方式:[中断机制避免单个进程长时间独占处理器的使用权]{.aqua} 产生的新问题:[中断机制导致进程间通信时对共享变量的修改结果不确定]{.aqua} [缓存一致性问题] ...
Read more
线程安全-概述
什么是线程安全问题?概述:::primary ① 详细讲述线程安全之前先来简单感受下什么是线程安全问题 ② 感受下出现线程安全问题的大致需要什么样的条件,因为我发现在没有样例的情况怎么写都是不好写的 ::: 线程不安全示例: [类提供对成员变量进行读写的方法,而多个线程同时调用类提供的该方法对成员变量递增 1000 次]{.aqua} [最后得到结果会是我们预想的 2000 吗?还是会得到一 ...
Read more
线程同步-synchronized-优化策略
优化策略概述 前言: [Java 线程采用的是内核级线程实现的]{.aqua} [Synchronized 每次造成的线程阻塞都会让线程执行上下文切换,从而导致 OS 从用户态陷入内核态]{.aqua} [OS 从用户态陷入内核态的开销是非常大的,为了避免因频繁的阻塞造成的上下文切换带来的开销]{.aqua} [JDK 官方在 JDK 6 之后推出了相应的优化策略]{.aqua} 细节:下列所 ...
Read more
线程同步-synchronized-底层原理
Synchronized-底层原理:::primary ① Synchronized 等价于操作系统中的管程,所以首先理解操作系统中的管程是非常重要的 ② Java 中提供的所有锁机制几乎都是基于管程的概念实现的 ③ 想要知道 Synchronized 是如何实现管程的,需要了解以下的知识 参考笔记: 堆空间 - 对象创建 进程同步-信号量 ::: 什么是管程?:::primary 先来了解下管程 ...
Read more
线程同步-synchronized-基础
Synchronized-基础基本概念:::primary 基本概念是对 synchronized 的所有内容的总结,如果发现存在难以理解的地方可以先查看后面的笔记 ::: [基本内容]{.label .info} synchronized 定义:[采用的 悲观锁 的思想,是一种独占锁或者说排他锁]{.red} synchronized 作用:[给共享变量添加排他锁从而确保 每次仅有一个线程 ...
Read more
线程同步-volatile
Read more
线程同步-锁类型
锁类型:::primary 这里只会简单讲述每种锁的概念是什么,具体到锁的每种实现则会放到后面的部分再讲 ::: 悲观锁和乐观锁 前言:悲观锁和乐观锁都是数据库并发控制中引入的概念,但并不仅限于数据库系统中使用 悲观锁 定义: [每次对共享变量的修改过程持悲观态度,认为其他线程访问会 频繁写入 共享变量]{.pink} [所以每次线程访问共享变量之前都会对其上锁,阻止其他线程访问 共享变量]{ ...
Read more
线程同步-概述
Read more
享元模式
Read more