
JUC
Jay-
这个作者很懒,什么都没留下…
展开
-
JUC学习之——生产者消费者问题
前言 前面写过一篇关于生产者消费者问题的博客,但是通过对JUC的学习,发现前面写的存在不少问题,比如使用synchronized锁,以及没有做好防止线程虚假唤醒的措施,故在此重新完善。 synchronized与Reentranlock的比较 ...原创 2020-06-25 22:47:46 · 296 阅读 · 0 评论 -
JUC学习之——ReentranLock
ReentranLock简介 ReentranLock是自JDK1.5引入的基于API层面的互斥锁,它是基于AQS实现的,采用的加锁解锁机制是CAS。 AQS和CAS AQS即ReetranLock的底层源码类AbstractQueuedSynchronizer的首字母简写,通常被称为队列式同步器。 AQS对资源访问的控制是通过虚拟双向队列CLH实现的,即将请求当前空闲资源的线程设为有效的工作线程,然后对资源进行加锁控制,禁止其他线程再对资源类进行访问;将请求当前已被占用资源的线程加入CLH双向队列中进原创 2020-06-25 15:49:27 · 546 阅读 · 0 评论 -
JUC学习之——多线程操作集合类的安全问题
Java中集合存在的线程安全问题 Java中,ArrayList、Hashset、HasMap等都是线程不安全的,主要原因就是其中许多操作(例如ArrayList中的add操作)是非原子的操作,这就导致多线程在操作这些集合类的时候会产生线程的安全性问题。 例如: List<Integer> list = new ArrayList<>(); for(i = 1;i <= 30; i++){ new Thread(() -> { list.add(i); Sys原创 2020-06-17 22:07:26 · 420 阅读 · 0 评论