摘要: 各种锁的理解 1、公平锁、非公平锁 公平锁: 非常公平, 不能够插队,必须先来后到! 非公平锁:非常不公平,可以插队 (默认都是非公平) public ReentrantLock() { sync = new NonfairSync(); } public ReentrantLock(boolean 阅读全文
posted @ 2020-08-05 22:59 Maple_XL 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 原子引用 带版本号 的原子操作! public class CASDemo { //AtomicStampedReference 注意,如果泛型是一个包装类,注意对象的引用问题 // 正常在业务操作,这里面比较的都是一个个对象 static AtomicStampedReference<Intege 阅读全文
posted @ 2020-08-05 22:57 Maple_XL 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 理解CAS public class CASDemo { //AtomicStampedReference 注意,如果泛型是一个包装类,注意对象的引用问题 // 正常在业务操作,这里面比较的都是一个个对象 static AtomicStampedReference<Integer> atomicSt 阅读全文
posted @ 2020-08-05 22:55 Maple_XL 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 彻底玩转单例模式 DCL懒汉式 使用双重检查懒汉式时为什么要使用volatile public class LazyMan { private static LazyMan lazyMan; private LazyMan() { } //双重检测模式的懒汉式单例 public static Laz 阅读全文
posted @ 2020-08-05 22:53 Maple_XL 阅读(177) 评论(0) 推荐(0) 编辑
摘要: Volatile Volatile 是 Java 虚拟机提供轻量级的同步机制 1、保证可见性 2、不保证原子性 3、禁止指令重排 1、保证可见性 public class JMMDemo { // 不加 volatile 程序就会死循环! // 加 volatile 可以保证可见性 private 阅读全文
posted @ 2020-08-05 22:50 Maple_XL 阅读(147) 评论(0) 推荐(0) 编辑
摘要: JMM 什么是JMM JMM : Java内存模型,不存在的东西,概念!约定! 关于JMM的一些同步的约定: 1、线程解锁前,必须把共享变量立刻刷回主存。 2、线程加锁前,必须读取主存中的最新值到工作内存中! 3、加锁和解锁是同一把锁 线程 工作内存 、主内存 内存划分 内存交互 内存交互操作有8种 阅读全文
posted @ 2020-08-05 22:48 Maple_XL 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 异步回调 Future 设计的初衷: 对将来的某个事件的结果进行建模 /** * 异步调用: CompletableFuture * // 异步执行 * // 成功回调 * // 失败回调 */ public class Demo01 { public static void main(String 阅读全文
posted @ 2020-08-05 22:46 Maple_XL 阅读(120) 评论(0) 推荐(0) 编辑
摘要: ForkJoin ForkJoin 在 JDK 1.7 , 并行执行任务!提高效率。 大数据量! 大数据:Map Reduce (把大任务拆分为小任务) ForkJoin 特点:工作窃取 这个里面维护的都是双端队列 ForkJoinPool /** * 求和计算的任务! * 3000 6000(Fo 阅读全文
posted @ 2020-08-05 22:44 Maple_XL 阅读(86) 评论(0) 推荐(0) 编辑
摘要: Stream流式计算 大数据:存储 + 计算 集合、MySQL 本质就是存储东西的; 计算都应该交给流来操作! // 有参,无参构造,get、set、toString方法! @Data @NoArgsConstructor @AllArgsConstructor public class User 阅读全文
posted @ 2020-08-05 22:42 Maple_XL 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 4大函数式接口 新时代的程序员:lambda表达式、链式编程、函数式接口、Stream流式计算 函数式接口: 只有一个方法的接口 Function接口 源码: @FunctionalInterface public interface Function<T, R> { /** * Applies t 阅读全文
posted @ 2020-08-05 22:40 Maple_XL 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 线程池 线程池:三大方法、7大参数、4种拒绝策略 线程池的好处: 1、降低资源的消耗 2、提高响应的速度 3、方便管理。 线程复用、可以控制最大并发数、管理线程 线程池:三大方法 // Executors 工具类、3大方法 public class poolTest { public static 阅读全文
posted @ 2020-08-05 22:38 Maple_XL 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 阻塞队列 四组API public class Test { public static void main(String[] args) throws InterruptedException { test4(); } /** * 抛出异常 */ public static void test1( 阅读全文
posted @ 2020-08-05 22:36 Maple_XL 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 读写锁 public class ReadWriteLockDemo { public static void main(String[] args) { // MyCache myCache = new MyCache(); MyCacheLock myCache = new MyCacheLoc 阅读全文
posted @ 2020-08-05 22:34 Maple_XL 阅读(90) 评论(0) 推荐(0) 编辑
摘要: JUC三大常用辅助类 CountDownLatch // 计数器 public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { // 总数是6,必须要执行任 阅读全文
posted @ 2020-08-05 22:32 Maple_XL 阅读(315) 评论(0) 推荐(0) 编辑
摘要: Callable接口 1、可以有返回值 2、可以抛出异常 3、方法不同,run()/ call() public class CallableTest { public static void main(String[] args) throws ExecutionException, Interr 阅读全文
posted @ 2020-08-05 22:30 Maple_XL 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 集合类不安全 List不安全 多线程操作List可能会出现:java.util.ConcurrentModificationException异常 // java.util.ConcurrentModificationException 并发修改异常! public class ListTest { 阅读全文
posted @ 2020-08-05 22:27 Maple_XL 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 8锁问题 如何判断锁的是谁!永远的知道什么锁,锁到底锁的是谁! /** * 8锁,就是关于锁的8个问题 * 1、标准情况下,两个线程先打印 发短信还是 打电话? 1/发短信 2/打电话 * 1、sendSms延迟4秒,两个线程先打印 发短信还是 打电话? 1/发短信 2/打电话 */ public 阅读全文
posted @ 2020-08-05 22:24 Maple_XL 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 生产者消费者问题 /** * 线程之间的通信问题:生产者和消费者问题! 等待唤醒,通知唤醒 * 线程交替执行 A B 操作同一个变量 num = 0 * A num+1 * B num-1 */ public class A { public static void main(String[] ar 阅读全文
posted @ 2020-08-05 22:21 Maple_XL 阅读(92) 评论(0) 推荐(0) 编辑
摘要: Lock锁 Synchronized @SuppressWarnings("all") public class SaleTicketDemo01 { public static void main(String[] args) { // 并发:多线程操作同一个资源类, 把资源类丢入线程 Ticke 阅读全文
posted @ 2020-08-05 22:19 Maple_XL 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 线程和进程 进程:一个程序, QQ.exe Music.exe 程序的集合; 一个进程往往可以包含多个线程,至少包含一个 ! Java默认有几个线程? 2个mian、 GC 线程:开了一个进程Typora ,写字,自动保存(线程负责的) 对于Java而言: Thread、Runnable、 Call 阅读全文
posted @ 2020-08-05 22:16 Maple_XL 阅读(128) 评论(0) 推荐(0) 编辑