![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
文章平均质量分 70
Gussie98
这个作者很懒,什么都没留下…
展开
-
juc下常见的类
juc(java.util.concurrent)下常见的类:ReentrantLock①lock写在try之前,不然释放锁会有问题;②使用Lock之后一定要记得在finally里面unlock();Semaphore信号量(来控制锁的数量)使用场景:秒杀系统 停车管理semaphore.acquire(); 尝试获取锁semaphore.release(); 释放锁CountDownLatch计数器,用来保障一组线程同时完成某个操作后,才能进行下一步操作①线程数量不满足它数量时,执行原创 2021-07-29 17:04:39 · 216 阅读 · 0 评论 -
多线程面试问题总结
start和run之间的区别线程的状态1、NEW2、RUNNABLE(RUNNING/ READY)3、WAITING4、TIMED_WAITING5、BLOCKED6、TERMINATED线程不安全的五个因素:1、CPU抢占式执行2、内存可见性(volatile可解决,操作完成时强制删除工作内存)3、指令重排序(编译器优化)4、原子性5、多线程同时修改同一个变量线程安全问题解决方案1、锁(让线程排队执行)–synchronized实现原理2、私有变量synchronize原创 2021-05-25 19:04:02 · 121 阅读 · 0 评论 -
线程池知识总结
线程池的六种创建方式:创建固定的线程池(任务数趋向无限大,建议谨慎使用);Executors.newFixedThreadPool:创建一个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等待;创建带缓存的线程池newCachedThreadPool(根据任务额数量成成对应的线程数,适用短期大量任务)Executors.newCachedThreadPool:创建一个可缓存的线程池,若线程数超过处理所需,缓存一段时间后会回收,若线程数不够,则新建线程;创建可以执行定时任原创 2021-05-24 17:14:54 · 109 阅读 · 0 评论