Java并发
文章平均质量分 92
Vighzhen
在校大学生
展开
-
Java并发实践
一、死锁线程死锁死锁是指两个或者两个以上的线程在执行的过程中,因争夺资源产生的一种互相等待现象。假设线程 A 持有资源 1,线程 B 持有资源 2,它们同时都想申请对方的资源,那么这两个线程就会互相等待而进入死锁状态。使用 Java 代码模拟上述死锁场景:public class Resources { public static final Object resource1 = new Object(); // 资源 1 public static final O原创 2022-02-23 15:15:19 · 188 阅读 · 0 评论 -
Java并发线程池
线程池Executor 框架Executor 框架是在 Java5 中引入的,通过该框架来控制线程的启动,执行,关闭,简化并发编程。Executor 基于生产者-消费者模式,提交任务的线程相当于生产者,执行任务的线程相当于消费者。同时,Executor 的实现还提供了对任务执行的生命周期管理的支持。 Executor 接口。Eexcutor 框架的基础,将任务提交和任务执行解耦。 ExecutorService 接口。继承自 Executor 接口,具备管理执行器和任原创 2022-02-23 14:59:56 · 73 阅读 · 0 评论 -
并发容器 & 并发工具
一、并发容器CopyOnWriteArrayList1.读写分离写操作在一个复制的数组上进行,读操作还是在原数组中进行,读写分离,互不影响。写操作需要加锁,防止并发写入时导致写入数据丢失。写操作结束之后需要把原数组指向新的复制数组。//写操作://通过过创建底层数组的新副本来实现的。//当 List 需要被修改的时候,并不修改原有内容,而是对原有数据进行一次复制,将修改的内容写入副本。//写完之后,把原数组指向新的复制数组。//这样可以保证写操作实在一个复制的数组上进行,而原创 2022-02-23 14:53:55 · 844 阅读 · 0 评论 -
原子操作类
原子操作类Atomiclnteger 源码解析java.util.concurrent.atomic下的所有原子操作类都实现了 CAS。AtomicInteger 内部维护一个变量Unsafe:private static final Unsafe unsafe = Unsafe.getUnsafe(); Unsafe 类中可以执行以下几种操作:分配内存,释放内存。allocateMemory,reallocateMemory,freeMemory 挂起和唤醒线程。被封装在 L.原创 2022-02-23 14:34:41 · 316 阅读 · 0 评论 -
Lock 体系
Lock 体系AQSAQS(AbtsractQueueSynchronized) 即同步队列器。AQS 是一个抽象类,本身并没有实现任何同步接口的,只是通过提供同步状态的获取和释放来供自定义的同步组件使用。AQS 的实现依赖内部的双向队列(底层是双向链表),称为同步队列。如果当前线程获取同步状态失败,则会将该线程以及等待状态等信息封装为 Node,将其加入同步队列的尾部,同时阻塞当前线程,当同步状态释放时,唤醒队列的头结点。AQS 使用 CAS 对该同步状态进行原子操作实现对其值的修原创 2022-02-23 14:27:37 · 81 阅读 · 0 评论 -
并发关键字
并发关键字关键词一:volatile可以这样说,volatile 关键字是 Java 虚拟机提供的轻量级的同步机制。功能volatile 有 2 个主要功能:可见性。一个线程对共享变量的修改,其他线程能够立即得知这个修改。普通变量不能做到这一点,普通变量的值在线程间传递需要通过主内存来完成。 禁止指令重排序。底层原理加入 volatile 关键字时,会多出lock 前缀指令, 该 lock 前缀指令相当于内存屏障,内存屏障会提供 3 个功能:在执行到内存屏障这句指令时,在其.原创 2022-02-23 14:18:56 · 92 阅读 · 0 评论 -
并发的理论
并发理论Java 内存模型Java 内存模型(即 Java Memory Model,简称 JMM)试图屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范。CPU缓存CPU 缓存的是内存数据用于解决 CPU 处理速度和内存不匹配的问题。通常情况下,当一个 CPU 需要读取主存数据时,它会将主存的数据读到 CPU 缓存中,甚至可能将缓存中的部分内容读到它的内部寄存器中,然后.原创 2022-02-23 14:01:58 · 1191 阅读 · 0 评论 -
进程和线程
一、进程和线程进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当启动 main 方法时其实就是启动了一个 JVM 的进程,而 main 方法所在的线程就是这个进程中的一个线程,称为主线程。进程是资源分配的基本单位。每一个进程都有它自己的内存空间和系统资源。线程线程与进程相似,但线程是一个比进程更小的执行单位,是进程中的单个顺序控制流,是一条执行路径。一个进程如果只有一条执行路径,则称为单原创 2022-02-23 13:56:16 · 107 阅读 · 0 评论