多线程和并发
Java中的多线程和并发编程实战
ranxyuan
代码总和我作对
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JUC阻塞队列实战
阻塞:必须要阻塞/不得不阻塞 阻塞队列是一个队列,在数据结构中起的作用如下图: 上图中: 线程1往阻塞队列里添加元素,线程2从阻塞队列里移除元素 当队列是空的,从队列中获取元素的操作将会被阻塞 当队列是满的,从队列中添加元素的操作将会被阻塞 试图从空的队列中获取元素的线程将会被阻塞,直到其他线程往空的队列插入新的元素 试图向已满的队列中添加新元素的线程将会被阻塞,直到其他线程从队列中移除一个或多个元素或者完全清空,使队列变得空闲起来并后续新增 阻塞队列的用处: 在多线程领域:所谓阻塞,在某些情况下会挂原创 2020-06-05 16:37:21 · 278 阅读 · 0 评论 -
Java并发包中的三个强大辅助类的实测代码(CountDownLatch,CyclicBarrier,Semaphore)
手敲了一下并发包中三个辅助类的使用,加深了理解。 1.CountDownLatch(减少计数) CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞。 其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞), 当计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行。 测试代码:秦灭六国,一个个灭掉,最终统一 package com.ran.juc; import java.util.concurrent.Co原创 2020-06-05 16:20:33 · 233 阅读 · 0 评论 -
volatile保证可见性,不保证原子性、禁止指令重排
volatile是Java虚拟机提供的轻量级的同步机制,保证可见性,不保证原子性、禁止指令重排 1.保证可见性 当多个线程访问同一个变量的时候,一个线程修改了这个变量的值,其他线程能够立刻看到修改的值 package com.jian8.juc; import java.util.concurrent.TimeUnit; /** * 1验证volatile的可见性 * 1.1 如果int num = 0,number变量没有添加volatile关键字修饰 * 1.2 添加了volatile,可以解决可见原创 2020-06-05 10:52:31 · 317 阅读 · 0 评论
分享