
多线程
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 · 103 阅读 · 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 · 241 阅读 · 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 · 76 阅读 · 0 评论 -
CompletableFuture 异步回调
CompletableFuture 实现了Future接口,Future最初的设计,是对将来的某个事件的返回结果进行建模。没有返回值的异步回调,结果返回的是void ,适用于成功回调,不需要结果返回。public static void main(String[] args) throws ExecutionException, InterruptedException { //执行异步回调 无返回 CompletableFuture<Void> voi原创 2021-11-17 09:56:29 · 683 阅读 · 0 评论 -
关于计算Forkjoin和java.util.stream流
Forkjoin是在JDK1.7的时候,用来的执行并行任务的类。可以把一个任务拆分成多个小任务,进行同步执行,来达到提高效率,适用于大数据量的场景。类似于工作窃取java.util.stream计算流是在JDK1.8的时候新增的。示例:需要继承RecursiveTask重写compute()计算方法package JUC.forkjjoin;import java.util.concurrent.RecursiveTask;public class ForkjoinTest原创 2021-11-15 11:20:38 · 127 阅读 · 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 · 672 阅读 · 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 · 420 阅读 · 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 · 116 阅读 · 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 · 107 阅读 · 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 · 114 阅读 · 0 评论