摘要:
十三、Stream流式计算 程序员必备技能: lambda表达式 链式编程 函数式接口 (有且只有一个方法) Stream流式计算 什么是Stream流式计算 大数据 : 存储 + 计算 存储: 集合 数据库(MySQL) 计算都应该交给 Stream流来操作! package com.liu.st 阅读全文
摘要:
十二、四大函数式接口(必须掌握) 程序员必备技能: lambda表达式 链式编程 函数式接口 (有且只有一个方法) Stream流式计算 函数式接口 Functional Interface : 只有一个方法的接口 @FunctionalInterface public interface Runn 阅读全文
摘要:
十一、线程池(重点) 线程池 : 三大方法、7大参数、4种拒绝策略 池化技术 程序运行 ⇒ 本质:占用系统的资源! 如何优化资源的使用? ⇒ 池化技术 常用的池: 线程池 连接池 内存池 对象池 ... 注意: 经常创建、销毁 会造成资源浪费 池化技术: 事先准备好一些资源,如果有人要用,就从这里拿 阅读全文
摘要:
十、阻塞队列BlockingQueue 队列 : FIFO 遵循先进先出原则 写入: 如果队列满了,就必须阻塞等待消费 取出: 如果队列是空的,必须阻塞等待生产 阻塞队列 BlockingQueue : 不是新的东西 具体的家族关系: JDK文档说明 重点使用的实现类: ArrayBlockingQ 阅读全文
摘要:
九、读写锁 ReadWriteLock Read Lock 读锁 (共享锁)=> 允许多个线程一起读 读的时候不允许写操作 Write Lock 写锁 (独占锁)=> 只允许一个线程(独家)写的时候不允许读操作 读写锁的目的: 保证线程安全 读写分离 package com.liu.rw; impo 阅读全文
摘要:
八、常用的辅助类(必会) 8.1、 CountDownLatch JDK1.8 文档说明: 本质: 减法 计数器 package com.liu.add; import java.util.concurrent.CountDownLatch; // 计数器 public class CountDow 阅读全文
摘要:
七、 Callable 相较于Runnable来说,Callable ⇒ : 可以有返回值 可以抛出异常 方法不同, run() ⇒ Runnable、 call() ⇒ Callable 代码测试 package com.liu.callable; import java.util.concurr 阅读全文
摘要:
六、集合类不安全 List 不安全 package com.liu.unsafeListOrSet; import com.liu.pc.A; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; // java. 阅读全文
摘要:
五、8 锁问题 如何判断锁的是谁? 对象 、Class 深入理解 锁 package com.liu.lock8; import java.util.concurrent.TimeUnit; /** * 8锁 : 关于锁的八个问题 * 1. 标准情况下,两个线程先打印 发短信 还是 打电话 ? 1 阅读全文
摘要:
四、synchronized 和 Lock的区别 重点! Synchronized 内置的Java关键字 Lock是一个Java类 Synchronized 无法判断获取锁的状态 Lock 可以判断是否获取到了锁 Synchronized 会自动释放锁,Lock必须手动释放锁!如果不释放则会导致死锁 阅读全文