并发
文章平均质量分 85
我的Coder小屋
本科阶段:延安大学(2015-2019),摸鱼四年。
研究生阶段:西北大学(2019-2022),还未结束,主编程语言Java
展开
-
AQS总结
AQS(Abstracted Queue Synchronizer)总结1 什么是AQS AQS的知识点总是和ReentrantLock可重入锁离不开,它其实就是一个队列+变量,定义了一套多线程访问共享资源的同步器框架,如下图:CLH可以看做一个先进先出队列,多线程抢夺资源阻塞时进入此队列。2 为什么需要AQS 锁的类型分为两种:互斥锁(独占锁):同一时间只有一个线程能获取锁(ReentrantLock)共享锁:允许多个线程同时拿到锁这两类锁都涉及到线程的互斥问题,这就意味着有原创 2021-07-07 08:22:59 · 137 阅读 · 0 评论 -
ReentrantLock锁总结
ReentrantLock锁(显式锁)总结1 概念 在Java5之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile(volatile可以说是java虚拟机提供的最轻量级的同步机制,后面会有单独介绍)。在Java5之后增加了一种新的机制:ReentrantLock。它并不是一种替代内置加锁的方法,而是当内置加锁机制不适用时,作为一种可选择的高级功能。2 Lock与ReentrantLock2.1 Lock Lock是一个接口,首先看一下Lock的源码。原创 2021-07-06 20:50:37 · 212 阅读 · 0 评论 -
volatile关键字原理详解
volatile关键字原理解析 volatile,Java保证并发的一种手段,Java为了保证并发提供了一系列并发机制:synchronized、ReentrantLock、volatile,其中volatile是最轻量级的锁。为什么这么说呢?下面将详细介绍,首先说一下Java同步的三大特性:原子性:顾名思义,每一个操作都是最小的不可分割的单元可见性:当前线程的操作对其他线程是可见的有序性:每一个原子操作的执行顺序是有序的这三大特性synchronized锁全部满足,而volatile则只原创 2021-07-06 20:46:22 · 227 阅读 · 0 评论 -
Synchronized锁总结
Synchronized锁(内置锁)总结1 概念 从1.0版本开始,Java中每一个对象都有一个内部锁。如果一个方法声明时有synchronized关键字,那么对象的锁将保护整个方法。也就是说要调用这个方法,线程必须获得内部对象锁。先看一下几个方法的解释:void notifyAll():解除在这个对象上调用wait方法的那些线程的阻塞状态。该方法只能在同步方法或同步块中调用。如果当前线程不是对象锁的所有者,该方法会抛出一个异常。void notify():随机选择一个在这个对象上调用wai原创 2021-07-06 20:38:10 · 714 阅读 · 1 评论 -
并发相关知识点总结
并发基础知识点总结1 什么是线程和进程?1.1 进程进程是程序的一次执行过程,是系统运行程序的基本单位。进程是动态的,系统运行一个程序即是一个进程从创建,运行到消亡的过程。1.2 线程线程是CPU调度的最小单元,与进程类似,但比进程更小。一个进程在执行过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在产生一个线程,或是在各个线程之间切换工作,负担要比进程小的多。因此线程也被称为轻量级进程。2 线程和进程的区原创 2021-07-06 20:14:40 · 135 阅读 · 2 评论 -
线程池详解
线程池详解1 什么是线程池? 线程池的起源是因为对象创建的开销过大,于是便有了池化的思想,一个线程用完后不去销毁而是放到池中等待为下一个对象服务。其优点显而易见:降低资源消耗:通过重复利用已创建的线程来降低线程创建和销毁造成的消耗。提高响应速度:当任务到达时可以不需要等待线程创建完之后再执行。提高线程的可管理性:使用线程池可以进一步对线程进行分配、调优和监控。2 Executor框架 Java5引入的框架,可以创建和启动线程。建议使用Executor来启动线程,比Thread类的s原创 2021-07-06 20:02:12 · 783 阅读 · 1 评论