JUC
java.util.concurrent
二楼后座。
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 线程池
主要特点: 线程复用,控制最大并发数,管理线程 1、降低资源消耗,通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 2、提高响应速度。当任务到达时,任务可以不需要等待线程创建就可以立即执行。 3、提高线程的可管理性。线程是稀缺资源,如果无限制创建,不仅消耗资源,还会降低系统的稳定性,使用线程池进行统一管理监控和调优。 Executors.newFixedThreadPool(int)//固定数量线程 Executors.newSingleThreadExecutor();//一线程 Executors原创 2021-04-26 16:48:25 · 144 阅读 · 0 评论 -
Java中常见锁的分类
公平和非公平锁 公平锁: 多个线程按照申请的顺序来取锁,先来后到。 非公平锁: 不是按照来的顺序,上来就尝试占有锁,尝试失败再变成公平锁的方式申请锁,可能后申请的线程先获取锁,造成优先级反转和饥饿。 ReentrantLock默认非公平锁,可以通过传入boolean来改变。Synchronized也是非公平。 可重入锁(递归锁) 线程可以进入任何一个它已经拥有锁的同步代码块。一个线程获取到外层方法的锁,再进入该内层方法会自动获取锁,前提是二者锁同一对象。 ReentrantLock和synchronized原创 2021-04-26 16:34:21 · 168 阅读 · 0 评论 -
Java CAS(CompareAndSwap)
CAS比较并交换 简介 如果线程的期望值和主物理内存的值一样,便将值写入主物理内存,如果不同,本次修改失败,并重新获取值。 特点 不加锁,并发性强。 底层实现 汇编:lock cmpxchg 使用场景 AtomicInteger等类底层就是CAS实现 //AtmoicInteger public final int getAndIncrement(){ return unsafe.getAndAddInt(this, valueOffset, 1); } //unsafe.getAndAddInt //原创 2021-04-26 16:19:45 · 193 阅读 · 0 评论 -
Java lock和synchronized
学习笔记 在调用wait和notify之前,需要先用synchronized获取对象的Monitor 同理使用await和signal之前需要先加锁. lock和synchronized的区别 1、原始构成 synchronize是Java关键字属于JVM层面 使用monitorenter和monitorexit实现(底层是通过monitor对象来完成,wait、notify也是依赖于monitor对象,因此只有在同步块或者方法中才能调用) lock是具体类(java.concurrent.locks.l原创 2021-04-26 16:06:53 · 248 阅读 · 0 评论
分享