JUC并发编程
yuan_boss
网络安全领域知识博主
展开
-
14.异步回调
异步回调 Future设计的初衷:对将来的某个事件结果进行建模 import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; /** * 异步调用:CompletableFuture *异步执行 * 成功回调 * 失败回调原创 2021-07-24 17:26:05 · 45 阅读 · 0 评论 -
13.ForkJoin详解
ForkJoin详解 什么是ForkJoin ForkJoin在JDK1.7,并行执行任务!提高效率,大数据量! 类似于大数据:Map Reduce(把大任务拆分成小任务) ForkJoin特点:工作窃取 这个里面维护的都是双端队列,B线程执行完之后不会等待,而是会窃取A的任务执行 ForkJoin的操作 import java.util.concurrent.RecursiveTask; /** * 求和计算的任务! * * 如何使用ForkJoin * 1.forkjoinpool来执原创 2021-07-24 17:25:11 · 169 阅读 · 0 评论 -
12.Stream流式计算
Stream流式计算 什么是流式计算 大数据:存储+计算 集合、MySQL本质就是存储东西的; 计算都应该交给流来操作! /** 题目要求:一分钟内完成此题,只能用一行代码实现! *现在有5个用户,筛选: 1.ID必须是偶数 2.年龄必须大于23岁 3.用户名转为大写字母 4.只输出一个用户! */ 该题目运用到了lambda表达式,链式编程,函数式接口,Stream流式计算 import java.util.Arrays; import java.util.List; /** * 题目要求:一分原创 2021-07-24 17:23:05 · 73 阅读 · 0 评论 -
10.彻底搞懂Java线程池
彻底搞懂Java线程池 文章目录彻底搞懂Java线程池三大方法三大方法代码实现7大参数三大方法源码分析七大参数图解:手动创建一个线程池4种拒绝策略小结和拓展 彻底搞懂线程池只需要知道线程池中:三大方法、7大参数,4中拒绝策略 池化技术 程序的运行,本质:占用系统的资源!优化资源的使用!==>池化技术 线程池,连接池,对象池 池化技术:事先准备好资源,有人要用,就来我这里拿,用完之后还给我 线程池的好处: 1.降低资源的消耗 2.提高响应速度 3.方便管理 线程复用、可以控制最大并发数、管理线程 三大原创 2021-07-23 14:05:20 · 1437 阅读 · 0 评论 -
8.读写锁
Java之读写锁 ReentrantReadWriteLock类的使用,这个ReentrantReadWriteLock类是ReadWriteLock的实现类 代码实现 import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.ReentrantReadWriteLock; /** * 独占锁(写锁)一次只能被一个线程占有 * 共享锁(读锁)多个线程可以同时占有 * ReentrantRe原创 2021-07-22 16:34:15 · 62 阅读 · 0 评论 -
9.阻塞队列
阻塞队列 队列:先进先出(FIFO) 阻塞队列: BlockingQueue:BlockingQueue不是新东西 什么情况下我们会使用阻塞队列:多线程并发处理,线程池! 学会使用队列 添加、移除 四组API 方式 抛出异常 有返回值,不会抛出异常 阻塞等待 超时等待 添加 add offer() put() offer(,) 移除 remove poll() take() poll(,) 检查队首元素 element peek – – 1.抛出异常 /**原创 2021-07-22 16:32:13 · 42 阅读 · 0 评论 -
7.JUC三大常用辅助类
JUC三大常用辅助类 文章目录JUC三大常用辅助类一、CountDownLatch代码实现原理:二、 CyclicBarrier代码实现实现原理三、Semaphore代码实现原理 一、CountDownLatch 这个类可以简单理解为减法计数器 代码实现 import java.util.concurrent.CountDownLatch; //计数器(减法) public class CountDownLatchDemo { public static void main(String[] a原创 2021-07-22 12:00:09 · 103 阅读 · 2 评论 -
6.Callable
Callable 1.有返回值(返回值类型与Callable接口的泛型一样) 2.可以抛出异常 3.方法不同,run()/call() 代码测试 import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; public class CallableTest { public static void main原创 2021-07-22 11:56:17 · 106 阅读 · 0 评论 -
3.消费者生产者问题防止虚假唤醒
消费者生产者问题防止虚假唤醒 文章目录消费者生产者问题防止虚假唤醒生产者和消费者问题Synchronized版JUC版的生产者与消费者代码实现Condition实现精准的通知与唤醒线程代码实现输出结果 生产者和消费者问题Synchronized版 public class A { public static void main(String[] args) { Data data = new Data(); new Thread(()->{ for (int i原创 2021-07-21 18:58:40 · 102 阅读 · 0 评论 -
2.Lock锁(重点)
2.Lock锁(重点) 文章目录2.Lock锁(重点)传统synchronized代码实现Lock锁synchronized与Lock锁区别 传统synchronized //真正的多线程开发,公司中的开发,要降低耦合性 //线程就是一个单独的资源类,没有任何附属操作(所以使用Lambda表达式) // 1.属性、方法 代码实现 public class SaleTicketDemo01 { public static void main(String[] args) { //并原创 2021-07-21 18:55:05 · 156 阅读 · 0 评论 -
1.线程、进程、并发编程
线程、进程、并发编程 文章目录线程、进程、并发编程进程线程线程有哪几个状态?wait/sleep区别Java真的可以开启线程吗原因--源码并发编程并发(多线程操作同一个资源)并行(多个人一起行走)实质:充分利用CPU的资源 进程 它是一个程序,如QQ.exe,Music.exe的集合,一个进程往往可以包含多个线程,至少包含一个 Java默认有2个线程,main(主线程),GC(守护线程) 线程 开了一个Typora,写字,自动保存这两个功能都是同时实现的,他们是两个线程 线程有哪几个状态?原创 2021-07-21 18:51:32 · 43 阅读 · 0 评论