随笔分类 - JUC并发编程
摘要:各种锁 1、公平锁、非公平锁 公平锁:非常公平,不能插队,必须先来后到 非公平锁:非常不公平,可以插队,(默认都是非公平的) public ReentrantLock() { sync = new NonfairSync(); } public ReentrantLock(boolean fair)
阅读全文
摘要:原子引用 ABA问题 一个线程 CAS操作的时候cas(1,2) 另一个线程 比他快 也执行了 CAS操作cas(1,3) cas(3,1) 值已经被修改了 public class CASDemo { //CAS compareAndSet 比较并交换! public static void ma
阅读全文
摘要:CAS 什么是CAS 大厂必须要深入研究底层! public class CASDemo { //CAS compareAndSet 比较并交换! public static void main(String[] args) { AtomicInteger atomicInteger = new A
阅读全文
摘要:单例模式 饿汉式 //饿汉式单例 public class Hungry { //可能会浪费空间 private byte[] data1 = new byte[1024]; private Hungry(){ } private static final Hungry HUNGRY = new H
阅读全文
摘要:JMM 对Volatile的理解 Volatile 是 Java 是虚拟机提供 轻量级的同步机制 保证可见性 不保证原子性 禁止指令重排 什么是JMM JMM:java内存模型,不存在的东西,概念 约定 关于JMM的一些同步的约定: 线程解锁前,必须把共享变量 立刻 刷回主存 线程加锁前,必须读取主
阅读全文
摘要:异步调用 CompletableFuture 异步执行 成功回调 失败回调 public class Demo01 { public static void main(String[] args) throws ExecutionException, InterruptedException { /
阅读全文
摘要:Stream流式计算 什么是Stream流式计算 大数据:存储+计算 集合、MySQL本质就是存储东西的 计算都应该交给流来操作 public class Test { public static void main(String[] args) { User u1 = new User(1,"a"
阅读全文
摘要:JUC概述 1、什么是juc 1.1 JUC 简介 在 Java 中,线程部分是一个重点,本篇文章说的 JUC 也是关于线程的。JUC就是 java.util .concurrent 工具包的简称。这是一个处理线程的工具包,JDK 1.5 开始出现的 1.2 进程与线程 进程(Process) 是计
阅读全文
摘要:ForkJoin 什么是ForkJoin ForkJoin在JDK1.7 并发执行任务!提高效率,大数据量! 大数据:Map Reduce(把大任务拆分成小任务) ForkJoin特点:工作窃取 B线程执行完之后会去抢夺A线程的任务 这个里面维护的都是双端队列 如果使用ForkJoinPool通过它
阅读全文
摘要:四大函数式接口 函数式接口 简化编程模型,在新版本的框架底层大量应用 foreach(消费者类的函数式接口) 四大函数式接口 消费型接口 Consumer void accept(T t) 供给型接口 Supplier T get() 函数型接口 Function<T,R> R apply(T t)
阅读全文
摘要:线程池(重点) 线程池:三大方法、7大参数、4种拒绝策略 池化技术 程序的运行,本质:占用系统的资源!优化资源的使用! >> 池化技术 线程池、连接池、内存池、对象池 创建、销毁,十分浪费资源 池化技术:事先准备好一些资源,有人要用,就来我这里拿,用完之后还给我 线程池的好处: 降低资源的消耗 提高
阅读全文
摘要:JUC并发编程2 8、常用的辅助类 8.1、CountDownLatch 允许一个或多个线程等待直到其他线程中执行的一组操作完成同步辅助 计数器 public class CountDownLatchDemo { public static void main(String[] args) thro
阅读全文
摘要:JUC java.util.concurrent 工具包 业务:普通的线程代码 Thread Runnable:没有返回值,效率相比 Callable 相对较低 1、进程和线程 进程:一个程序,QQ.exe、Music.exe 一个进程往往可以包含多个线程,至少包含一个 java 默认 有两个线程:
阅读全文