JUC
feng_zi-06
这个作者很懒,什么都没留下…
展开
-
各种锁的理解
1.公平锁,非公平锁 公平锁: 非常公平,不能插队,必须先来后到 非公平锁: 非常不公平,可以插队,默认是非公平 Lock lock = new ReentrantLock(true); public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync(); } 2.可重复锁 synchronized 拿一把锁 会把里面的锁也拿到 public class loc原创 2021-11-18 15:45:31 · 77 阅读 · 0 评论 -
CAS原理分析, 以及引发的ABA问题
CAS 是AtomicInteger类中compareAndSet()方法的缩写 import java.util.concurrent.atomic.AtomicInteger; /** * CAS 是compareAndSet的缩写 译:比较并交换 此操作是在内存中进行 */ public class CASTest { public static void main(String[] args) { //设定初始值1 AtomicInteger ...原创 2021-11-18 11:12:55 · 213 阅读 · 0 评论 -
volatile 介绍
volatile是java虚拟机提供的轻量级同步机制。 特点是: 1.保证可见性 即不同线程在对同一个变量进行修改时,保证新值对其他线程的可见。 2.不保证原子性 import java.util.concurrent.atomic.AtomicInteger; public class VolatileTest { //private volatile static int num = 0; private static AtomicInteger num = new A.原创 2021-11-17 15:23:55 · 49 阅读 · 0 评论 -
CompletableFuture 异步回调
CompletableFuture 实现了Future接口,Future最初的设计,是对将来的某个事件的返回结果进行建模。 没有返回值的异步回调,结果返回的是void ,适用于成功回调,不需要结果返回。 public static void main(String[] args) throws ExecutionException, InterruptedException { //执行异步回调 无返回 CompletableFuture<Void> voi原创 2021-11-17 09:56:29 · 636 阅读 · 0 评论 -
ThreadPoolExecutor 线程池 三大方法 七大参数
> 池化技术 程序的运行,本质是占用系统资源,优化资源的使用。 池化技术:事先准备好的一些资源,用就来拿 **好处**: 1.降低资源消耗 2.提高响应速度 3.方便管理 == 线程复用,可以控制最大并发数,管理线程 == 三大方法 package com.pa.test.JUC.pool; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public cl原创 2021-11-10 16:44:52 · 637 阅读 · 0 评论 -
SynchronousQueue 同步队列
没有容量,进去put()一个元素,必须等待取take()出来之后,才能在往里面放。 package com.pa.test.JUC.queue; import java.util.concurrent.SynchronousQueue; import java.util.concurrent.TimeUnit; /** * 同步列队 */ public class SynchronousQueueTest { public static void main(String[] args) {原创 2021-11-10 10:40:31 · 378 阅读 · 0 评论 -
BlockingQueue 四组API
# BlockingQueue 四组API 抛出异常 不抛异常 阻塞等待 超时等待 方式 抛出异常 有返回值 阻塞等待 超时等待 添加 add() offer() put() offer(...) 移除 remove() poll() take() poll(..) 判断队列首 element() peek() package com.pa.test.原创 2021-11-10 10:09:36 · 92 阅读 · 0 评论 -
CountDownLatch,CyclicBarrier,Semaphore 使用
package com.pa.test.JUC.support; import java.util.concurrent.CountDownLatch; /** * CountDownLatch 减法计数器 * 原理: * countDownLatch.countDown(); //数量-1 * countDownLatch.await(); //执行等待 等待计数器归零,然后在向下执行 * 每次有线程调用countDownLatch.countDown()数量-1 ,当计数器为0 , co.原创 2021-11-01 16:57:55 · 86 阅读 · 0 评论 -
ReadWriteLock JUC多线程读写锁
package com.pa.test.JUC.lock; import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; /** * ReadWriteLock * 读 读 可以共存 * 读 写 不能共存 * 写 写 不能共存 */ publ.原创 2021-11-04 14:56:19 · 79 阅读 · 0 评论