并发琐事
文章平均质量分 82
一点点并发知识
千楼
这个作者很懒,什么都没留下…
展开
-
浅谈不变性
什么是不变性( Immutable) 如果对象在被创建后,状态就不能被修改,那么它就是不可变的, 例子: person对象,age和name都不能再变public class Person { final int age = 18; final String name = "Alice";}final的作用类防止被继承、方法防止被重写、变量防止被修改天生是线程安全的,而不需要额外的同步开销3种用法:修饰变量、方法、类final修饰变量: 被 final修饰的变量原创 2021-11-05 15:38:39 · 231 阅读 · 0 评论 -
浅谈CAS
1.什么是CAS在并发的时候,我认为V的值应该是A,如果是的话那我就把它改成B,如果不是A(说明被别人修改过了),那我就不修改了,避免多人同时修改导致出错。CAS有三个操作数:内存值∨、预期值A、要修改的值B,当且仅当预期值A和内存值∨相同时,才将内存值修改为B,否则什么都不做。最后返回现在的V值[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Zma6ucB-1636097856684)(https://i.loli.net/2021/10/28/GvlIsXypZ8Th原创 2021-11-05 15:37:57 · 74 阅读 · 0 评论 -
浅谈原子类
什么是原子类,有什么作用?不可分割一个操作是不可中断的,即便是多线程的情况下也可以保证java.util.concurrent.atomic原子类的作用和锁类似,是为了保证并发情况下线程安全。不过原子类相比于锁,有一定的优势粒度更细: 原子变量可以把竞争范围缩小到变量级别,这是我门可以获得的最细粒度的情况了,通常锁的粒度都要大于原子变量的粒度效率更高: 通常,使用原子类的效率会比使用锁的效率更高,除了高度竞争的情况6类原子类纵览Atomic基本类型原子类Atomic原创 2021-11-05 15:35:36 · 361 阅读 · 0 评论 -
浅谈一下锁
1.Lock接口1.1简介、地位、作用◆锁是一种工具,用于控制对共享资源的访问。◆Lock和 synchronized,这两个是最常见的锁,它们都可以达到线程安全的目的,但是在使用上和功能上又有较大的不同◆Lock并不是用来代替 synchronized的,而是当使用synchronized不合适或不足以满足要求的时候,来提供高级功能的◆Lock接口最常见的实现类是 Reentrantlock◆通常情况下,Lock只允许—个线程来访问这个共享资源。不过有的时候,一些特殊的实现也可允许并发访问,比原创 2021-11-05 15:31:28 · 139 阅读 · 0 评论 -
浅谈ThreadLocal
1. ThreadLocal简介ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意:因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thr原创 2021-11-05 15:28:40 · 4049 阅读 · 1 评论 -
聊聊线程池
线程池1.1 构造参数参数名类型含义corePoolSizeint核心线程数,在线程池完成初始化后,默认情况下,线程池中并没有任务线程,线程池会等待有任务到来时,再去创建新线程去执行任务maximumPoolSizeint线程池在核心线程数的基础上,额外增加一些线程,但是新增加的线程数有一个上限,最大量就是maximumPoolSizekeepAliveTimelong保持存活时间,如果线程池当前的线程数多于corePoolSize,当这些多余线程空闲时间超原创 2021-11-05 15:22:21 · 90 阅读 · 0 评论