摘要: 21、各种锁理解 1、公平锁和非公平锁: 公平锁:非常公平,不能够插队,必须先来后到!FIFO 非公平锁:非常不公平,可以插队(默认都是非公平) 2、可重入锁 递归锁 可重入锁synchronized 版本 1 package com.xing.lock; 2 ​ 3 //Synchorized 4 阅读全文
posted @ 2022-08-21 23:39 暴躁C语言 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 19、深入理解CAS 什么是CAS 1 package com.xing.cas; 2 ​ 3 import java.util.concurrent.atomic.AtomicInteger; 4 // 原子类的底层用的cas 5 public class CASDemo { 6 //compar 阅读全文
posted @ 2022-08-21 23:37 暴躁C语言 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 18、深入单例模式 java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个 阅读全文
posted @ 2022-08-21 21:56 暴躁C语言 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 16、JMM 什么是JMM JMM : Java内存模型,不存在的东西,概念!约定! 关于JMM的同步约定: 1、线程解锁前,必须把共享变量立刻刷回主存 2、线程加锁前,必须读取主存中的最新值到工作内存中! 3、加锁和解锁是同一把锁 线程 :工作内存、主内存 JMM规定了内存主要划分为主内存和工作内 阅读全文
posted @ 2022-08-21 21:53 暴躁C语言 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 14、Forkjoin(分支合并) 什么是 ForkJoin ForkJoin 在 JDK 1.7 , 并行执行任务!提高效率。在大数据量中! 大数据:Map Reduce (把大任务拆分为小任务) Forkjoin 特点:工作窃取,这里面维护的是双端队列 接口 通过forkjoinPool来执行f 阅读全文
posted @ 2022-08-21 21:49 暴躁C语言 阅读(58) 评论(0) 推荐(0) 编辑
摘要: 12、四大函数式接口(重点) 函数接口:只有一个方法的接口 1 @FunctionalInterface 2 public interface Runnable { 3 4 public abstract void run(); 5 } 6 //超级多@FunctionalInterface 7 / 阅读全文
posted @ 2022-08-21 21:46 暴躁C语言 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 11、线程池(重点) 线程池 Executors:3大方法、7大参数、4种拒绝策略 池化技术 程序的运行,本质:占用系统的资源!优化资源的使用! ==> 引进了一种技术池化池 线程池、连接池、内存池、对象池… 池化技术:事先准备好一些资源,有人要用,就来我这里拿,用完之后还给我。 线程池的好处 1、 阅读全文
posted @ 2022-08-21 21:41 暴躁C语言 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 9、读写锁 自定义的缓存,没有加锁,就会出现一个没有写入完成,另一个突然插进来的情况 1 package com.xing.rw; 2 ​ 3 import java.util.HashMap; 4 import java.util.Map; 5 ​ 6 /** 7 * ReadWriteLock 阅读全文
posted @ 2022-08-21 21:38 暴躁C语言 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 8、常用的辅助类 CountDownLatch 减法计数器: 实现调用几次线程后 再触发某一个任务 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 package com.xing.demo03; ​ import java.util.concurrent.C 阅读全文
posted @ 2022-08-21 21:33 暴躁C语言 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 6、集合类不安全 1、并发下ArrayList 不安全 1 package com.xing.Unsafe; 2 ​ 3 import java.util.*; 4 import java.util.concurrent.CopyOnWriteArrayList; 5 ​ 6 public clas 阅读全文
posted @ 2022-08-21 21:30 暴躁C语言 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 5、8锁的现象 如何判断锁的是谁,锁到底锁的是谁:对象和class Test1 package com.xing.lock8; ​ import java.util.concurrent.TimeUnit; ​ /** * 8锁,就是关于锁的八个问题 * 1.标准情况下,两个线程去打印 先输出发短息 阅读全文
posted @ 2022-08-21 21:26 暴躁C语言 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 1、什么是JUC 1、什么是juc(学习方法:官方文档+源码) JUC —— (java.util.concurrent)是一个包名的缩写,java工具类下的一个并发功能的包。 该包下存放的均为多线程相关类, Runnable 没有返回值、效率相比入 Callable相对较低,但callable可以 阅读全文
posted @ 2022-08-21 21:24 暴躁C语言 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 7、线程通信问题 生产者消费者模式的问题 应用场景︰生产者和消费者问题 假设仓库中只能存放一件产品,生产者将生产出来的产品放入仓库﹐消费者将仓库中产品取走消费﹒ 如果仓库中没有产品,则生产者将产品放入仓库,否则停止生产并等待,直到仓库中的产品被消费者取走为止. 如果仓库中放有产品﹐则消费者可以将产品 阅读全文
posted @ 2022-08-21 00:07 暴躁C语言 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 6、线程同步 1.介绍 多个线程操作同一个资源 由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突问题,为了保证数据在方法中被访问时的正确性,在访问时加入锁机制synchronized ,当一个线程获得对象的排它锁,独占资源,其他线程必须等待,使用后释放锁即可,存在以下问题 阅读全文
posted @ 2022-08-21 00:02 暴躁C语言 阅读(22) 评论(0) 推荐(0) 编辑