
JUC
文章平均质量分 59
JUC
很皮的皮蛋瘦肉粥
这个作者很懒,什么都没留下…
展开
-
1、JUC:什么是JUC及进程与线程
JUC是java.util.concurrent包的缩写,是java并发包。java.util 工具包业务:普通的线程代码 ThreadRunnable 没有返回值,效率相比于Callable相对较低!1.2、进程、线程进程:一个程序,QQ.exe Music.exe 程序的集合。一个进程可以包含多个线程,至少包含一个!java默认有有几个线程? 2个 main线程、GC线程:开了一个进程Typora,写字,自动保存(线程负责的)对于java而言:Thread、Runnable、Ca原创 2020-10-29 20:41:45 · 273 阅读 · 0 评论 -
3、JUC:生产者和消费者问题
3.1、Sychronized版package com.chen.pc;/** * 线程交替的通信问题,生产者和消费者问题! 等待唤醒,通知唤醒 * 线程交替执行 A B 操作同一个变量 num = 0 * A num + 1 * B num - 1 */public class A { public static void main(String[] args) { Data data = new Data(); new Thread(()->转载 2020-10-30 21:36:28 · 131 阅读 · 0 评论 -
4、JUC:8锁问题
第一组package com.chen.lock8;import java.util.concurrent.TimeUnit;/** * 8 锁,就是关于锁的8个问题 * 1、标准情况下,两个线程先打印 打电话 还是 发短信? 1.发短 2.打电话 * 2、sendSms延迟4秒,两个线程先打印 打电话 还是 发短信? */public class Test1 { public static void main(String[] args) { Phone ph转载 2020-10-31 16:39:20 · 151 阅读 · 0 评论 -
2、JUC:Lock锁(重点)
3.1、传统Synchronizedpackage com.chen.demo01;// 基本的卖票例子/** * 真正的多线程开发,公司中的开发,降低耦合性 * 线程就是一个单独的资源类,它没有任何的附属操作! * 1、属性、方法 */public class SaleTicketDemo01 { public static void main(String[] args) { // 并发,多线程操作同一个资源类 Ticket ticket =转载 2020-10-31 16:42:59 · 137 阅读 · 0 评论 -
5、JUC:集合类不安全
5.1、List不安全package com.chen.unsafe;import java.util.*;import java.util.concurrent.CopyOnWriteArrayList;// java.util.ConcurrentModificationException 并发修改异常public class ListTest { public static void main(String[] args) { // 并发下 ArrayList转载 2020-11-02 11:04:54 · 115 阅读 · 0 评论 -
6、JUC:Callable
1、可以有返回值2、可以抛出异常3、方法不同,Runnable的run() Callable的call()6.1、代码测试转载 2020-11-03 10:54:46 · 133 阅读 · 0 评论 -
7、JUC:常用的辅助类
8.1、CountDownLatch减法计数器import java.util.concurrent.CountDownLatch;// 计数器public class CountDownLatchTest { public static void main(String[] args) throws InterruptedException { // 倒计时6,必须要执行任务的时候,再使用! CountDownLatch countDownLatch =转载 2020-11-06 16:22:31 · 92 阅读 · 0 评论 -
8、JUC:读写锁
ReadWriteLock/** * 独占锁(写锁)一次只能被一个线程占有 * 共享锁(读锁) 多个线程可以同时占有 * ReadWriteLock 读写锁 * 读-读 可以共存! * 读-写 不能共存! * 写-写 不能共存! */public class ReadWriteLockDemo { public static void main(String[] args) { MyCache2 myCache = new MyCache2();转载 2020-11-06 17:06:39 · 135 阅读 · 0 评论 -
9、JUC:阻塞队列
文章目录9.1、简介9.2、四组API9.3、SynchronousQueue 同步队列9.1、简介阻塞队列:BlockingQueue 不是新的东西什么情况下会使用 阻塞队列:多线程并发处理,线程池!9.2、四组API方式抛出异常有返回值阻塞等待超时等待添加add()offer()put()offer(, ,)移除remove()poll()take()poll(,)检测队首元素element()peek()/**转载 2020-11-07 10:46:57 · 95 阅读 · 0 评论 -
10、JUC、线程池(重点)
文章目录10.1、池化技术10.2、三大方法10.3、七大参数10.4、手动创建线程池10.5、四种拒绝策略10.6、小结核拓展线程池:三大类型、七大参数、四种拒绝策略10.1、池化技术程序的运行,本质:占用系统的资源! 优化资源的使用! =》池化技术线程池、连接池、内存池、对象池… 创建、销毁,十分浪费资源池化技术:事先准备好一些资源,有人要用,就来我这里拿,用完之后还给我线程池的好处:1、降低资源消耗2、提高响应速度3、方便管理线程复用、可以控制最大并发数、管理线程10.2、三大方转载 2020-11-07 16:32:30 · 127 阅读 · 0 评论 -
11、JUC:四大函数式接口
文章目录11.1、函数式接口11.2、代码测试11.2.1、Function11.2.2、Predicate11.2.3、Consumer11.2.4、Supplier11.1、函数式接口只有一个方法的接口@FunctionalInterfacepublic interface Runnable { public abstract void run();}// 超级多@FunctionalInterface// 简化编程模型,在新版本的底层框架大量应用!// foreach()的参转载 2020-11-07 19:39:04 · 199 阅读 · 0 评论 -
12、JUC:Stream流式计算
12.1、什么是Stream流式计算大数据: 存储 + 计算集合、MySQL 本质就是存储东西的;计算都应该交给流来操作!package com.chen.stream;import java.util.Arrays;import java.util.List;/** * 题目要求:一分钟内完成此题,只能用一行代码实现 * 现有5个用户! 筛选: * 1、ID 必须是偶数 * 2、年龄必须要大于23岁 * 3、用户名转换为大写字母 * 4、用户名字字母倒着排序 * 5、只输转载 2020-11-09 10:58:53 · 136 阅读 · 0 评论 -
13、JUC:ForkJoin
文章目录14.1、什么是ForkJoin13.2、ForkJoin 特点13.3、ForkJoin操作14.1、什么是ForkJoinForkJoin在 JDK1.7 之后出现,并行执行任务! 提高效率,大数据量!大数据:Map Reduce(把大任务拆分成小任务)13.2、ForkJoin 特点工作窃取这个里面维护的都是双端队列现有两个线程A、B,此时B线程已经执行完了,A还没有执行完,这时B就会将A里面的任务偷过来执行。13.3、ForkJoin操作...转载 2020-11-22 22:26:49 · 128 阅读 · 0 评论 -
14、JUC:异步回调
14.1、Future设计初衷:对将来的某个事件的结果进行建模转载 2020-11-29 14:50:47 · 105 阅读 · 0 评论 -
15、JUC:JMM及Volatile
文章目录15.1、 请你谈谈对Volatile的理解15.2、什么是JMM15.3、 Volatile15.1.1、保证可见性15.1.2、不保证原子性15.1.3、指令重排15.1、 请你谈谈对Volatile的理解Volatile 是 Java 虚拟机提供的轻量级的同步机制1、保证可见性2、不保证原子性3、禁止指令重排15.2、什么是JMMJMM java内存模型,是一个不存在的东西,是一个概念,约定!关于JMM的一些同步的约定1、线程解锁前,必须把共享变量立刻刷回主存2、线程加锁前转载 2020-11-29 16:49:19 · 159 阅读 · 0 评论 -
16、JUC:单例模式
饿汉式 DCL懒汉式 深究!这里的双重检测枷锁是保证了操作原子性,只有一个线程能创建一个实例,其他线程无法创建第二个,volatile关键字是为了防止因为指令重排导致的多线程问题,有可能线程A创建一个实例,虚拟机只执行了分配空间,对象地址引用这两步,这时线程B过来发现对象已经被创建了,但是获取到的对象是还没有被初始化的。...转载 2020-11-30 22:03:35 · 103 阅读 · 0 评论 -
17、JUC:深入理解CAS及ABA问题
文章目录17.1、什么是CAS17.2、Unsafe类17.2、ABA问题17.3、原子引用17.1、什么是CASpackage com.chen.cas;import java.util.concurrent.atomic.AtomicInteger;public class CASDemo { // CAS compareAndSet:比较并交换 public static void main(String[] args) { AtomicInteger at转载 2021-01-01 19:21:46 · 163 阅读 · 0 评论 -
18、JUC:各种锁的理解
18.1、公平锁、非公平锁公平锁:非常公平,不能够插队,必须先来后到!非公平锁:非常不公平,可以插队(默认都是非公平锁)public ReentrantLock() { sync = new NonfairSync();}// 可以通过传递参数true将它变成公平锁public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new NonfairSync();}18.2、可重入锁(递归锁)Syn转载 2021-01-02 00:27:22 · 115 阅读 · 0 评论