![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JUC
【江的福AC万物】
这个作者很懒,什么都没留下…
展开
-
关于CAS初理解
为自己理一理思路。如果有什么理解不当的地方,希望大家慷慨指正。先捧一波,这篇文章我觉得很好,大家有兴趣可以看看。我有些中途有些不理解的东西,看完这篇之后,就明白了一些。CAS详解那么就开始吧~因为volatile的不保证原子性,所以才引出了CAS这条大蛇,那么我们先来看看为什么volatile是不保证原子性的。咱们只看线程一和线程二就行。简单解释一下这个图,有三个线程访问物理内存,物...原创 2020-03-29 15:03:34 · 224 阅读 · 1 评论 -
CAS缺陷及其ABA问题解决
下次再原创 2020-03-30 13:20:09 · 355 阅读 · 0 评论 -
安杰小讲堂之HashMap(jdk1.7)
代码总是猝不及防的。HashMap<String,String> map =new HashMap<>(); map.put("李靖", "嗲地"); map.put("哪吒", "弟弟"); map.put("金吒", "大弟弟"); map.put("木吒", "二弟弟"); map.pu...原创 2020-03-30 21:31:05 · 310 阅读 · 1 评论 -
安杰小讲堂之HashMap(jdk1.8)
安杰:江德福,江德福,起床。德华你快去叫你哥起床。太阳都晒他的腚了。德华:嫂子你咋一点儿都不心疼俺哥呢。好歹俺哥那么个大男人,每天都被你呼来喝去的。江德福:来了来了,谁叫我呀。大早上的还不让人睡个安生觉。安杰:睡什么睡,快点儿去吃饭,咱们还得接着昨天的课,继续聊聊hashmap 在jdk1.8中,是怎么实现的。两人默默拿出了早就准备好的小板凳。一顿狼吞虎咽,然后乖乖坐好,看着小蓝板。...原创 2020-03-31 14:18:16 · 135 阅读 · 0 评论 -
让我“锁”住你的心
公平锁与非公平锁可重入锁(递归锁)意思就是当有某一个线程拿到了外层函数的锁之后,它就自动拿到了内层函数的锁。还有些晦涩难懂?咱们来举个栗子????class phone{ public synchronized void get(){ System.out.println(Thread.currentThread().getId()+"get方法"); ...原创 2020-04-01 17:42:41 · 112 阅读 · 0 评论 -
江的福的小本本之CountDownLatch,CyclicBarrire,Semaphore
CountDownLatch顾名思义,倒计时发射。看API中介绍它的这一段话。一个数字初始化它,当这个数字变为0,await解除。”我main是大哥,绝不会丢下任何一个小弟,你们先走我殿后“小栗子????:import java.util.concurrent.CountDownLatch;public class CountDownLatchDemo { public sta...原创 2020-04-01 22:10:09 · 137 阅读 · 0 评论 -
安杰小讲堂之阻塞队列
德华:嫂子,为什么会有阻塞队列呢?安杰:它的产生主要有两个原因,一个是“不得不”,另一个是“应该有”。不得不:就像我们去银行排队取钱,当没有提供给你的窗口的时候,我们就需要坐在小板凳上,看着《父母爱情》。应该有:比如说经营一家餐厅,我们当然希望自己准备的餐桌永远都不空,当没有餐桌的时候,就让顾客先等一会儿。下面是详细介绍那么它的出现对我们有什么好处呢?我们不在需要自己去控制那些...原创 2020-04-02 20:45:25 · 200 阅读 · 0 评论 -
synchronized和lock的区别 +小练习
小练习:首先是一个不太好的示范,虽然结果是正确的,但是很繁琐,且没有灵活发挥condition的作用。import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import jav...原创 2020-04-03 12:58:37 · 122 阅读 · 0 评论 -
阻塞队列之生产者消费者
一个练习串一串最近所学知识。生产者消费者问题,之前用lock写过,但是阻塞队列的出现,使得我们不需要自己去写它的判断条件,而是初始化阻塞队列之后,他就自己控制存进取出了。因为是多线程,所以不可避免的,我们的需要volatile关键字,来保持定义变量的可见性,并且还需要用原子整型 AtomicInteger来保证原子性,这样才能保证它在多线程下不出现线程安全问题。还需要注意的是,这里的阻塞队列...原创 2020-04-06 09:15:22 · 101 阅读 · 0 评论 -
江的福的小本本之Callable
下面是Thread 的构造函数,我们发现它并没有定义以Callable为参数的有参构造。但是,如果我们想用实现Callable 的方法,来开启线程,应该怎么办呢?如上图,能进Thread的构造方法是一个Runnable接口的实现,但此时我们只有一个Callable接口,这时候我们就需要找一个“中间人”。 也就是说,如果我们能找到一个类,同时实现了Runnable接口和Callable接口,...原创 2020-04-06 15:44:55 · 156 阅读 · 0 评论 -
江的福的小本本之线程池
线程池的底层是阻塞队列,这一点需要注意。ThreadPoolExecutor是重点Executors是线程池的工具类。import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class MyThreadPoolDemo { public static ...原创 2020-04-07 12:38:54 · 139 阅读 · 0 评论 -
江的福的小本本之死锁
死锁是什么?两个或两个以上的线程,在执行过程中,因争夺资源而造成的一种互相等待的现象。若无外力干涉,他们将无法进行下去,如果系统资源充足,进程的资源请求都能得到满足,死锁出现的可能性很低,否则就会因争夺有限资源而陷入死锁。死锁产生的主要原因:撸代码:public class DeadLockDemo implements Runnable{ private String lock...原创 2020-04-07 20:12:12 · 157 阅读 · 0 评论 -
江的福的小本本之集合类线程不安全
1、 Arraylist的线程不安全众所周知,Arraylist是线程不安全的,它的add方法并没有加synchronized,那我们先来体验一下它的不安全。现象: java.util.ConcurrentModificationException那我们该如何解决这种不安全问题呢?什么? 你说加锁?亲,咱们来看看可以看到,Vector实现了List接口,再看add方法,可以看到s...原创 2020-04-15 13:01:08 · 163 阅读 · 0 评论