![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java并发编程
文章平均质量分 92
java多线程
xujingyiss
这个作者很懒,什么都没留下…
展开
-
并发编程之Executor线程池原理与源码解读
线程池就是一个线程缓存。为什么要使用线程池?在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话,实现起来非常简便,但是存在一个问题:如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。可能出现服务器在为每个请求创建新线程和销毁线程上花费的时间和消耗的系统资源要比处理实际的用户请求的时间和资源更多。因为线程的创建和销毁是非常消耗时间和系统资源的!为了解决这个问题,引入了原创 2022-02-15 20:49:52 · 214 阅读 · 0 评论 -
并发编程之AQS详解
Java并发编程核心在于java.util.concurrent包(简称juc)。这整个包的作者都是:doug lea什么是AQSAQS 是 AbstractQueuedSynchronizer 的简称。AbstractQueuedSynchronizer 是一个抽象类。在 juc 中,常用的那些类(例如ReentrantLock、CountDownLatch、Semaphore),内部都维护了一个Sync对象(同步器),而 Sync 就是继承了 AbstractQueuedSynchron原创 2022-01-25 17:22:13 · 475 阅读 · 0 评论 -
并发编程之synchronized关键字
本文介绍下java并发编程中常用的锁与synchronized关键字。同步器多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这个资源我们称之其为临界资源。这种资源可能是:对象、变量、文件等。共享:资源可以由多个线程同时访问 可变:资源可以在其生命周期内被修改由于线程执行的过程是不可控的,所以需要采用同步机制来协同对对象可变状态的访问。那么怎么解决线程并发安全问题呢? 实际上,所有的并发模式在解决线程安全问题时,采用的方案都是序列化访问临界资源。即在同一时刻,只能有.原创 2022-01-19 19:47:37 · 407 阅读 · 0 评论 -
并发编程之volatile关键字
volatile作用并发编程三大特性:可见性、有序性。原子性volatile关键字保证可见性与有序性,但是不能保证原子性,要保证原子性需要借助synchronized、Lock锁机制。可见性:保证被volatile修饰的共享变量对所有线程总数可见的,也就是当一个线程修改了一个被volatile修饰共享变量的值,新值总是可以被其他线程立即得知 有序性:禁止指令重排序优化volatile缓存可见性实现原理从两个方面来解释:1)JMM内存交互层面volatile修饰的变量的read..原创 2022-01-11 18:44:56 · 622 阅读 · 0 评论 -
并发编程之JMM(Java内存模型)
什么是JMMJMM 即 Java内存模型(Java Memory Model),一种抽象的概念,并不真实存在。JMM与JVM内存区域模型的区别JMM与JVM内存区域的划分是不同的概念层次。JMM与硬件内存架构的关系实际上,多线程的执行最终都会映射到硬件处理器上进行执行,但Java内存模型和硬件内存架构并不完全一致。硬件内存:分为寄存器、CPU缓存、主内存 JMM:分为工作内存(线程私有数据区域)和主内存(堆内存)也就是说:JMM对内存的划分对硬件内存并没有任何影响,因为JMM..原创 2022-01-11 09:45:04 · 1298 阅读 · 1 评论 -
并发编程之什么是线程
什么是线程现代操作系统在运行一个程序时,会为其创建一个【进程】。例如,启动一个Java程序,操作系统就会创建一个Java进程。现代操作系统调度CPU的最小单元是线程,也叫轻量级进程(Light Weight Process)。在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。线程的实现可以分为两类:用户级线程(User-Level Thread) 内核线线程(Kernel..原创 2022-01-07 09:10:57 · 123 阅读 · 0 评论 -
并发编程之MESI缓存一致性协议
MESI缓存一致性协议,用于解决多线程环境下的缓存一致性问题。缓存一致性问题在多处理器系统中,每个处理器都有自己的高速缓存,而它们又共享同一主内存。当多个处理器的运算任务都涉及同一块主内存区域时,将可能导致各自的缓存数据不一致的情况,如果真的发生这种情况,那同步回主内存时以谁的缓存数据为准呢?!这个就是缓存一致性问题。为了解决一致性的问题,需要各个处理器访问缓存时都遵循一些协议,在读写时要根据协议来进行操作。主要使用的协议是:MESI缓存一致性协议。缓存行(Cache line)CPU缓原创 2022-01-10 22:28:09 · 682 阅读 · 0 评论 -
并发编程之现代计算机理论模型与工作原理
现代计算机模型是基于-冯诺依曼计算机模型冯诺依曼计算机模型模型图计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去。接下来,再取出第二条指令,在控制器的指挥下完成规定操作。依此进行下去,直至遇到停止指令。程序与数据一样存储,按程序编排的顺序,一步一步地取出指令,自动地完成指令规定的操作,是计算机最基本的工作模型。这一原理最初是由美籍匈牙利数学家冯.诺依曼于1945年提出来的,故称为冯.原创 2021-12-28 09:54:46 · 327 阅读 · 0 评论