![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
阿xu827
这个作者很懒,什么都没留下…
展开
-
JUC多线程知识点
VolatileVolatile是Java虚拟机提供的轻量级同步机制(1.保证可见性;2.不保证原子性;3.禁止指令重排)线程需要从主内存中把数据读到自己的内存中,进行处理后再写回主内存,可见性就是现在一个线程修改了主内存中的值后,其它线程必须要知道这个值发生了改变,加了Volatile之后,变量值改变之后,所有的线程都可以知道。class MyData{ volatile int num = 0; public void addNum(){ this.num =原创 2020-06-19 13:34:29 · 195 阅读 · 0 评论 -
JUC计时工具类
CountDownLatchJUC里的倒计时类让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒。CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞。其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞),当计数器的值变为零时,因调用await方法被阻塞的线程会被唤醒,继续执行。 例如:火箭发射。pa...原创 2020-01-14 09:46:55 · 152 阅读 · 0 评论 -
锁
公平锁和非公平锁公平锁:是指多个线程按照申请锁的顺序来获取锁,类似排队打饭,先来后到。非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。在高并发的情况下,有可能会造成优先级反转或者饥饿现象。并发包中的ReentrantLock的创建可以指定构造函数的boolean类型来得到公平锁或者非公平锁,默认是非公平锁。package tongbu;...原创 2020-01-14 09:42:46 · 144 阅读 · 0 评论 -
集合类不安全之并发修改异常
故障现象java.util.ConcurrentModificationException解决方案 new Vector<>(); Collections.synchronizedList(new Arraylist<>()); new CopyOnWriteArrayList<>();写时复制CopyOnWrite 容器即写时复制的容器,往...原创 2020-01-14 09:33:07 · 134 阅读 · 0 评论 -
CAS
CASCAS原理ABA问题CAS原理比较并交换原理:unsafe.getAndAddInt;底层汇编,根据变量地址获取变量值比较并交换。CAS缺点:循环时间长开销很大;只能保证一个共享变量的原子操作;ABA问题。ABA问题CAS底层使用unsafe类,当前线程根据内存地址获取值,比较值相同后交换。但如果另一个线程也操作了这个变量并且修改回原来的值,当前线程并不知道,值还是相等,修改值。...原创 2020-01-14 09:28:10 · 110 阅读 · 0 评论 -
Volatile
Volatilevolatile作用可见性实例代码volatile作用Volatile是Java虚拟机提供的轻量级同步机制(1.保证可见性;2.不保证原子性;3.禁止指令重排)可见性线程需要从主内存中把数据读到自己的内存中,进行处理后再写回主内存,可见性就是现在一个线程修改了主内存中的值后,其它线程必须要知道这个值发生了改变,加了Volatile之后,变量值改变之后,所有的线程都可以知道...原创 2020-01-14 09:17:03 · 81 阅读 · 0 评论