![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程和并发
Java中的多线程和并发编程实战
ranxyuan
代码总和我作对
展开
-
JUC阻塞队列实战
阻塞:必须要阻塞/不得不阻塞阻塞队列是一个队列,在数据结构中起的作用如下图:上图中: 线程1往阻塞队列里添加元素,线程2从阻塞队列里移除元素当队列是空的,从队列中获取元素的操作将会被阻塞当队列是满的,从队列中添加元素的操作将会被阻塞试图从空的队列中获取元素的线程将会被阻塞,直到其他线程往空的队列插入新的元素试图向已满的队列中添加新元素的线程将会被阻塞,直到其他线程从队列中移除一个或多个元素或者完全清空,使队列变得空闲起来并后续新增阻塞队列的用处:在多线程领域:所谓阻塞,在某些情况下会挂原创 2020-06-05 16:37:21 · 219 阅读 · 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 · 172 阅读 · 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 · 261 阅读 · 0 评论