![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程和锁
钟期何遇
这个作者很懒,什么都没留下…
展开
-
JUC.谈谈线程池
什么是线程池?简单来说,线程池就是提前创建好若干个线程,当有任务到达时,就可以使用已创建好的线程去执行该任务,处理完任务之后线程不会立即销毁,而是放入池中,等待执行下一个任务。打一个比方,线程池就像一个银行,银行里有几个常驻的窗口来处理顾客的业务,办完一个业务就进行下一个,没有任务就待命。为什么要用线程池?合理由的使用线程池,可以带来以下3个好处:1.降低资源消耗:线程池可以通过复用已创建的线程来降低线程创建和销毁开销!不必一个任务就创建一个线程!2.提高响应速度:当线程池中有空闲线程时,任务到原创 2020-05-11 15:41:21 · 174 阅读 · 0 评论 -
浅谈--Java中的锁
Java中的锁分类在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。公平锁/非公平锁公平锁...原创 2020-04-25 10:17:20 · 92 阅读 · 0 评论 -
volatile关键字的特点和底层实现
1.一个 volatile 变量自身具有以下三个特性:(1)可见性:即当一个线程修改了声明为 volatile 变量的值,新值对于其他要读该变量的线程来说是立即可见的。而普通变量是不能做到这一点的,普通变量的值在线程间传递需要通过主内存来完成。底层实现:volatile 可见性的实现就是借助了 CPU 的 lock 指令,通过在写 volatile 的机器指令前加上lock 前缀,使写 vo...原创 2020-04-15 09:03:02 · 324 阅读 · 0 评论 -
谈谈CAS
1.什么是CAS?CAS的全称为Compare-And-Swap ,它是一条CPU并发原语.它的功能是判断内存某个位置的值是否为预期值,如果是则更新为新的值,这个过程是原子的.CAS并发原语提现在Java语言中就是sun.miscUnSaffe类中的各个方法.调用UnSafe类中的CAS方法,JVM会帮我实现CAS汇编指令.这是一种完全依赖于硬件 功能,通过它实现了原子操作,再次强调,由于C...原创 2020-04-10 15:11:50 · 145 阅读 · 0 评论 -
谈谈volatile关键字的理解
前言:谈谈Java内存模型在 JDK1.2 之前,Java的内存模型实现总是从主存(即共享内存)读取变量,是不需要进行特别的注意的。而在当前的 Java 内存模型下,线程可以把变量保存本地内存(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成数据的不一致。数据不一致要解决这个问题,就需...原创 2020-04-10 13:48:12 · 152 阅读 · 0 评论 -
浅谈synchronized关键字的理解
简介原创 2020-04-09 20:29:42 · 449 阅读 · 1 评论