
JUC
文章平均质量分 59
JUC
很皮的皮蛋瘦肉粥
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1、JUC:什么是JUC及进程与线程
JUC是java.util.concurrent包的缩写,是java并发包。 java.util 工具包 业务:普通的线程代码 Thread Runnable 没有返回值,效率相比于Callable相对较低! 1.2、进程、线程 进程:一个程序,QQ.exe Music.exe 程序的集合。 一个进程可以包含多个线程,至少包含一个! java默认有有几个线程? 2个 main线程、GC 线程:开了一个进程Typora,写字,自动保存(线程负责的) 对于java而言:Thread、Runnable、Ca原创 2020-10-29 20:41:45 · 301 阅读 · 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 · 157 阅读 · 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 · 174 阅读 · 0 评论 -
2、JUC:Lock锁(重点)
3.1、传统Synchronized package com.chen.demo01; // 基本的卖票例子 /** * 真正的多线程开发,公司中的开发,降低耦合性 * 线程就是一个单独的资源类,它没有任何的附属操作! * 1、属性、方法 */ public class SaleTicketDemo01 { public static void main(String[] args) { // 并发,多线程操作同一个资源类 Ticket ticket =转载 2020-10-31 16:42:59 · 158 阅读 · 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 · 137 阅读 · 0 评论 -
6、JUC:Callable
1、可以有返回值 2、可以抛出异常 3、方法不同,Runnable的run() Callable的call() 6.1、代码测试转载 2020-11-03 10:54:46 · 156 阅读 · 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 · 111 阅读 · 0 评论 -
8、JUC:读写锁
ReadWriteLock /** * 独占锁(写锁)一次只能被一个线程占有 * 共享锁(读锁) 多个线程可以同时占有 * ReadWriteLock 读写锁 * 读-读 可以共存! * 读-写 不能共存! * 写-写 不能共存! */ public class ReadWriteLockDemo { public static void main(String[] args) { MyCache2 myCache = new MyCache2();转载 2020-11-06 17:06:39 · 158 阅读 · 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 · 116 阅读 · 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 · 158 阅读 · 0 评论 -
11、JUC:四大函数式接口
文章目录11.1、函数式接口11.2、代码测试11.2.1、Function11.2.2、Predicate11.2.3、Consumer11.2.4、Supplier 11.1、函数式接口 只有一个方法的接口 @FunctionalInterface public interface Runnable { public abstract void run(); } // 超级多@FunctionalInterface // 简化编程模型,在新版本的底层框架大量应用! // foreach()的参转载 2020-11-07 19:39:04 · 228 阅读 · 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 · 157 阅读 · 0 评论 -
13、JUC:ForkJoin
文章目录14.1、什么是ForkJoin13.2、ForkJoin 特点13.3、ForkJoin操作 14.1、什么是ForkJoin ForkJoin在 JDK1.7 之后出现,并行执行任务! 提高效率,大数据量! 大数据:Map Reduce(把大任务拆分成小任务) 13.2、ForkJoin 特点 工作窃取 这个里面维护的都是双端队列 现有两个线程A、B,此时B线程已经执行完了,A还没有执行完,这时B就会将A里面的任务偷过来执行。 13.3、ForkJoin操作 ...转载 2020-11-22 22:26:49 · 155 阅读 · 0 评论 -
14、JUC:异步回调
14.1、Future 设计初衷:对将来的某个事件的结果进行建模转载 2020-11-29 14:50:47 · 127 阅读 · 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、什么是JMM JMM java内存模型,是一个不存在的东西,是一个概念,约定! 关于JMM的一些同步的约定 1、线程解锁前,必须把共享变量立刻刷回主存 2、线程加锁前转载 2020-11-29 16:49:19 · 182 阅读 · 0 评论 -
16、JUC:单例模式
饿汉式 DCL懒汉式 深究! 这里的双重检测枷锁是保证了操作原子性,只有一个线程能创建一个实例,其他线程无法创建第二个,volatile关键字是为了防止因为指令重排导致的多线程问题,有可能线程A创建一个实例,虚拟机只执行了分配空间,对象地址引用这两步,这时线程B过来发现对象已经被创建了,但是获取到的对象是还没有被初始化的。 ...转载 2020-11-30 22:03:35 · 126 阅读 · 0 评论 -
17、JUC:深入理解CAS及ABA问题
文章目录17.1、什么是CAS17.2、Unsafe类17.2、ABA问题17.3、原子引用 17.1、什么是CAS package 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 · 185 阅读 · 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 · 133 阅读 · 0 评论