随笔分类 -  JUC

摘要:公平锁,非公平锁 公平锁:不能插队,必须先来后到 FIFO 非公平锁:可以插队 可以允许短任务优先(默认) /** * Creates an instance of {@code ReentrantLock}. * This is equivalent to using {@code Reentra 阅读全文
posted @ 2022-01-19 16:11 一刹流云散 阅读(75) 评论(0) 推荐(0) 编辑
摘要:什么是CAS public class CASDemo { //CAS compareAndSet:比较并交换 public static void main(String[] args) { AtomicInteger atomicInteger=new AtomicInteger(2020); 阅读全文
posted @ 2022-01-19 13:48 一刹流云散 阅读(64) 评论(0) 推荐(0) 编辑
摘要:保证可见性 public class JMMDemo { //加了volatile,可以保证可见性 private static volatile int num=0; public static void main(String[] args) throws InterruptedExceptio 阅读全文
posted @ 2022-01-18 17:46 一刹流云散 阅读(32) 评论(0) 推荐(0) 编辑
摘要:请你谈谈你对Volatile的理解 Volatile:java虚拟机提供的轻量级的同步机制(Synchronized) 保证可见性 不保证原子性 禁止指令重排 什么是JMM(JVM是java虚拟机) JMM是java中的内存模型,不存在的东西,是一种概念,约定 JMM即为JAVA 内存模型(java 阅读全文
posted @ 2022-01-17 17:59 一刹流云散 阅读(322) 评论(0) 推荐(0) 编辑
摘要:异步调用 /*异步调用 * ajax: 客户端服务器 * future: java类CompletableFuture<T> * 1. 异步执行 * 2. 成功回调 * 3. 失败回调*/ public class Demo01 { public static void main(String[] 阅读全文
posted @ 2022-01-17 17:28 一刹流云散 阅读(61) 评论(0) 推荐(0) 编辑
摘要:什么是ForkJoin 并行执行任务 提高效率(大数据量时) 大数据:MapReduce 把大任务拆分为小任务 ForkJoin ForkJoin特点 工作窃取 维护了一个双端队列 当两个线程同时执行时,其中一个线程先执行完,可以偷取未执行完线程的工作帮助它执行 ForkJoin操作 定义一个计算类 阅读全文
posted @ 2022-01-17 17:00 一刹流云散 阅读(39) 评论(0) 推荐(0) 编辑
摘要:什么是Stream流式计算 存储+计算 集合框架,mysql 本质是存储东西的 计算应该交给流来操作 //一行代码实现五个要求 /* 筛选出 * 1.id必须是偶数 * 2.年龄大于15岁 * 3.用户名转为大写字母 * 4.用户名字母倒着排序 * 5.只输出一个用户*/ public class 阅读全文
posted @ 2022-01-16 17:39 一刹流云散 阅读(162) 评论(0) 推荐(0) 编辑
摘要:lambda表达式,链式编程,函数式接口,Stream流式计算 ##函数式接口(只有一个方法的接口) 简化编程模型 在新版本的框架底层大量应用 foreach(消费者类型的函数式接口) 四大函数式接口 Function 有一个输入参数,有一个输出参数 /*函数式接口 * 有一个输入参数,有一个输出参 阅读全文
posted @ 2022-01-16 17:17 一刹流云散 阅读(42) 评论(0) 推荐(0) 编辑
摘要:CPU密集型,12条线程同时执行,几核cpu就定义几个线程,可以保证cpu效率最高 //获取运行机器的cpu的核数 Runtime.getRunTime().availableProcessors() IO密集型,如果有15个大型任务,IO十分占用资源,判断程序中十分消耗IO的线程的个数,(可以使线 阅读全文
posted @ 2022-01-16 16:39 一刹流云散 阅读(202) 评论(0) 推荐(0) 编辑
摘要:池化技术 程序运行的本质:占用系统的资源,优化资源的使用 ⇒ 线程池,JDBC连接池,内存池,对象池 事先准备好一些资源,有人要用,就来我这里拿,用完之后还给我 最小连接数 最大连接数 线程池的好处? 减低资源消耗 提高响应效率(创建和销毁十分浪费资源) 方便管理 ####线程可以复用,可以控制最大 阅读全文
posted @ 2022-01-15 17:32 一刹流云散 阅读(31) 评论(0) 推荐(0) 编辑
摘要:没有容量,不存储元素,进去一个元素必须等待取出来之后才能再往里面放一个元素 put/take public class SynchronizedQueue { public static void main(String[] args) { BlockingQueue<String> synchro 阅读全文
posted @ 2022-01-15 13:50 一刹流云散 阅读(384) 评论(0) 推荐(0) 编辑
摘要:FIFO BlockingQueue ArrayBlockingQueue LinkedBlockingQueue SynchronousQueue 什么时候使用阻塞队列 多线程并发处理,A调用B,如果B未执行完,A需要等待 多线程,线程池 使用队列 四组API 抛出异常 不会抛出异常 阻塞等待 超 阅读全文
posted @ 2022-01-14 18:21 一刹流云散 阅读(24) 评论(0) 推荐(0) 编辑
摘要:读可以被多线程同时读 写的时候只能有一个线程写 /* * 独占锁 一次只能被一个线程占有(写锁),共享锁 多个线程可以同时占有(读锁) * ReadWriteLock * 读-读 可以共存 * 读-写 不能共存 * 写-写 不能共存*/ public class ReadWriteLockDemo 阅读全文
posted @ 2022-01-13 16:33 一刹流云散 阅读(31) 评论(0) 推荐(0) 编辑
摘要:CountDownLatch:用来计数减一的辅助工具类 public class CountDownLatchDemo { //必须要执行任务的时候再执行 public static void main(String[] args) throws InterruptedException { Cou 阅读全文
posted @ 2022-01-13 15:25 一刹流云散 阅读(29) 评论(0) 推荐(0) 编辑
摘要:@FunctionalInterface public interface Callable返回结果并可能引发异常的任务。 实现者定义一个没有参数的单一方法,称为call 。 Callable接口类似于Runnable ,因为它们都是为其实例可能由另一个线程执行的类设计的。 然而,A Runnabl 阅读全文
posted @ 2022-01-13 14:25 一刹流云散 阅读(71) 评论(0) 推荐(0) 编辑
摘要:public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable支持检索的完全并发性和更新的高预期并发性的哈希表。 这个类服从相同功能规范如Hashtabl 阅读全文
posted @ 2022-01-12 14:56 一刹流云散 阅读(146) 评论(0) 推荐(0) 编辑
摘要:List不安全 //ArrayList扩容源码 public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; } p 阅读全文
posted @ 2022-01-12 14:53 一刹流云散 阅读(21) 评论(0) 推荐(0) 编辑
摘要:锁(只会锁两个东西=》(对象(普通同步方法),class模板(静态同步方法))) package com.ji.lock8; import java.util.concurrent.TimeUnit; /* * 八锁就是关于锁的八个问题 * 1. 标准情况下,两个线程先打印 发短信还是打电话(并不是 阅读全文
posted @ 2022-01-12 11:27 一刹流云散 阅读(183) 评论(0) 推荐(0) 编辑
摘要:##synchronized:wait notify /*线程之间的通信问题,生产者和消费者问题 通知唤醒,等待唤醒 * 线程交替进行,A B操作统一变量 num=0 * A num+1 * B num-1 * */ public class Product { public static void 阅读全文
posted @ 2021-12-29 21:33 一刹流云散 阅读(29) 评论(0) 推荐(0) 编辑
摘要:##传统Synchronized //基本卖票例子 /* * 真正的多线程开发 * 线程就是一个单独的资源类,没有任何附属的操作,拿来即用 * 1. 属性,方法*/ public class SaleTicketDemo01 { public static void main(String[] ar 阅读全文
posted @ 2021-12-29 20:47 一刹流云散 阅读(47) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示