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