
并发琐事
文章平均质量分 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 · 279 阅读 · 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 · 108 阅读 · 0 评论 -
浅谈原子类
什么是原子类,有什么作用? 不可分割 一个操作是不可中断的,即便是多线程的情况下也可以保证 java.util.concurrent.atomic 原子类的作用和锁类似,是为了保证并发情况下线程安全。不过原子类相比于锁,有一定的优势 粒度更细: 原子变量可以把竞争范围缩小到变量级别,这是我门可以获得的最细粒度的情况了,通常锁的粒度都要大于原子变量的粒度 效率更高: 通常,使用原子类的效率会比使用锁的效率更高,除了高度竞争的情况 6类原子类纵览 Atomic基本类型原子类 Atomic原创 2021-11-05 15:35:36 · 419 阅读 · 0 评论 -
浅谈一下锁
1.Lock接口 1.1简介、地位、作用 ◆锁是一种工具,用于控制对共享资源的访问。 ◆Lock和 synchronized,这两个是最常见的锁,它们都可以达到线程安全的目的,但是在使用上和功能上又有较大的不同 ◆Lock并不是用来代替 synchronized的,而是当使用synchronized不合适或不足以满足要求的时候,来提供高级功能的 ◆Lock接口最常见的实现类是 Reentrantlock ◆通常情况下,Lock只允许—个线程来访问这个共享资源。不过有的时候,一些特殊的实现也可允许并发访问,比原创 2021-11-05 15:31:28 · 192 阅读 · 0 评论 -
浅谈ThreadLocal
1. ThreadLocal简介 ThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。 ThreadLoal 变量,线程局部变量,同一个 ThreadLocal 所包含的对象,在不同的 Thread 中有不同的副本。这里有几点需要注意: 因为每个 Thread 内有自己的实例副本,且该副本只能由当前 Thr原创 2021-11-05 15:28:40 · 4307 阅读 · 1 评论 -
聊聊线程池
线程池 1.1 构造参数 参数名 类型 含义 corePoolSize int 核心线程数,在线程池完成初始化后,默认情况下,线程池中并没有任务线程,线程池会等待有任务到来时,再去创建新线程去执行任务 maximumPoolSize int 线程池在核心线程数的基础上,额外增加一些线程,但是新增加的线程数有一个上限,最大量就是maximumPoolSize keepAliveTime long 保持存活时间,如果线程池当前的线程数多于corePoolSize,当这些多余线程空闲时间超原创 2021-11-05 15:22:21 · 123 阅读 · 0 评论