![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
e_shi_yi_p_l
人生免不了围城之困,只要抬头便会发现城内城外都是同一个蓝天、退一步说人之所以能,是相信能。
展开
-
大话-阻塞队列(阻塞 唤醒),生产者、消费者的实现
队列先进先出的一种数据结构,那什么是阻塞队列呢?从名字可以看出阻塞队列其实也就是队列的一种特殊情况。从上面这张图我们会发现这样的规律:(1)当阻塞队列为空时,从队列中获取元素的操作将会被阻塞,就好比餐馆休息区没人了,此时不能接纳新的顾客了。换句话,肚子为空的时候也没东西吃。(2)当阻塞队列满了,往队列添加元素的操作将会被阻塞,好比餐馆的休息区也挤满了,后来的顾客只能走了。从上面的概念我们类比到线程中去,我们会发现,在某些时候线程可能不能不阻塞,因为CPU内核就那么几个,阻塞现状更加说明了资源的利原创 2020-05-18 10:00:45 · 499 阅读 · 0 评论 -
大话-多个线程间通信的利器 CountDownLatch,CyclicBarrier,Semaphore
背景:高并发下,有了线程池,那么如何控制多个线程间互相配合 灵活工作哈、让线程做到说暂停就暂停、说跑就跑JUC提供了三大利器:CountDownLatch,CyclicBarrier,Semaphore一、CountDownLatch 数量 减少 上锁,countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待的线程就原创 2020-05-17 08:16:37 · 183 阅读 · 0 评论 -
记一次连接池配置导致的问题
最近测试环境老抛出这个错,Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 53,014,427 milliseconds ago. The last packet sent successfully to the server was 53,014,427 milliseconds ago. is lo原创 2020-05-12 19:04:34 · 384 阅读 · 0 评论 -
大话锁系列---公平锁 非公平锁 可重入锁 自旋锁 写锁 读锁 互斥锁................
针对这系列锁,主要以文字,demo 细细阐述…一、公平锁 非公平锁,主要是ReentrantLock 、synchronizedReentrantLock 默认非公平锁,优点是吞吐量比公平锁大–、synchronized 是非公平锁。 public ReentrantLock() { //no nfair不公平 sync = new NonfairSync(); } //配置 true ,为公平锁- public ReentrantLock(boolean原创 2020-05-11 10:17:55 · 212 阅读 · 0 评论 -
大话多线程下集合类如何生存,那些事
你常用的集合类是啥?—ArrayList,HashSet,HashMap1、单机版这肯定没啥问题,多线程环境下还好使吗?2、有啥解决方案不?3、为啥这种方案好使?面对这一串三连问,有多少人能扛得住~且听我细细道来。。。 List<String> list= new ArrayList<>(); for (int i = 0; i < 30; i++) { new Thread(()->{原创 2020-05-09 12:01:56 · 201 阅读 · 0 评论 -
大话CAS,那些事--无锁才是真的快。。。。。
话说这个synchronized关键字保证了,多线程环境下加锁 强行-单线程执行。可惜呀,这个性能太差劲了,因此就有了 CAS一种无锁算法的出现。我们今天从 java.util.concurrent.atomic.AtomicInteger 并发包下的这个工具类慢慢道来AtomicInteger atomicInteger=new AtomicInteger(5); atomicInteg...原创 2020-05-06 15:18:17 · 222 阅读 · 0 评论 -
大话JMM-内存模型,volatile起了啥作用
前面说到了,多线程sync 同步,线程之间的通信,jvm构成等等,唯独没有说这个volatile话说这个volatile有三大特性1、保证可见性2、不保证原子性3、禁止指令重排(有序)这三大特性由啥决定的呀,当然是工作内存JMMJMM即为JAVA 内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在...原创 2020-05-05 13:46:23 · 223 阅读 · 0 评论 -
大话多线程处理~多线程真的快?线程池 emmm......
常听人说,多线程处理快~ 是啊,多条渠道同时进行确实快、可在计算机世界多线程处理一定快吗,显然不是。首先了解几个常识1、线程执行需要获取cpu的执行权2、对于1核cpu,多个线程需要去抢cpu、谁抢到谁执行,这就代表有个切换的过程~抢到 执行 退出,切换要浪费多少时间 emmm…、还不如一个线程一直跑快呢因此,多线程处理不一定快,还的看硬件条件跟不跟的上说了这么多,想到了什么没、多线程处理...原创 2020-04-19 11:57:15 · 417 阅读 · 0 评论