![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC
大付狗
这个作者很懒,什么都没留下…
展开
-
阻塞队列 BlockingQueue 的四组api
第一组 add() 和 remove() 方法 // 抛出异常 返回布尔值 public static void test1(){ ArrayBlockingQueue queue = new ArrayBlockingQueue<>(3); System.out.println(queue.add(1)); System.out.println(queue.add(2)); System.out.println(原创 2020-12-18 23:51:12 · 253 阅读 · 1 评论 -
(JAVA)(ReadWriteLock)读写锁
首先自定义一个缓存来实现程序的读(get)和写(put)操作。在自定义缓存(这里使用HashMap定义缓存)的时候会使用volatile关键字,volatile关键字的特点可以保证操作的可见性,但不一定保证操作的原子性。为什么要保证操作的可见性,这里简略说一下,因为在多线程情况下如果线程A对缓存进行操作,线程B也对缓存进行操作,在A写入缓存的时候B也写入缓存,会出现B的写入对A的写入覆盖的情况,程序会抛出异常,还有其他的数据异常的情况会出现,详情可以了解java中多线程。 class MyCache1{.原创 2020-12-18 17:39:11 · 145 阅读 · 3 评论 -
JUC中常用的三大辅助类
CountDownLatch CountDownLatch类可以设置一个计数器,然后通过countDown方法来进行减1的操作,使用await方法等待计数器不大于0,然后继续执行await方法之后的语句。 package demo_04; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; // JUC中常用的三大辅助类 一CountDownLatch public class test原创 2020-12-18 00:04:40 · 690 阅读 · 0 评论 -
(Java)集合类的安全性问题及解决方法
集合类在单线程的情况下不会出现问题 package demo_02; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Test_02 { public static void main(String[] args) { List<String> list = Arrays.asList("1", "2", "3"); lis原创 2020-12-16 19:46:57 · 316 阅读 · 0 评论 -
线程八锁现象的理解
八锁即锁的八个问题 一、正常情况下线程的执行顺序 package demo_02; // 八锁问题 // 正常线程执行情况 public class Test_01 { public static void main(String[] args) { PrintMessage pm = new PrintMessage(); new Thread(()->{pm.printA();},"A").start(); new Thread(()-.原创 2020-12-16 14:10:10 · 194 阅读 · 1 评论 -
生产者消费者问题(JAVA)
生产者消费者问题 生产者消费者问题是操作系统中经典的多线程操作问题,这里主要讲解如何在java中解决生产者消费者问题,避免死锁的产生。 生产者消费者问题简单来说就是有生产者和消费者两类人,生产者负责生产产品,消费者负责消费产品,怎么保证消费者进行消费的时候一定有产品可以进行消费?如果产品都存储在仓库里,怎么保证生产者生产不会超出仓库的存储限制?这就是生产者消费者问题的核心。 解决方法 一、使用传统的synchronized锁解决该问题 使用传统的synchronized锁解决该问题在操作方法加上s原创 2020-12-15 23:06:17 · 300 阅读 · 0 评论