并发编程
文章平均质量分 92
Java并发编程
夜班三更敲代码
这个作者很懒,什么都没留下…
展开
-
Java线程池
文章目录线程池1. 线程池的主要处理流程2. 创建线程的方法3. 线程池主要解决两个问题4. 三大方法5. 七大参数6. 四种拒绝策略7. 向线程池提交任务8. 线程池都有哪些状态?9. 关闭线程池线程池1. 线程池的主要处理流程提交一个新任务到线程池时,首先判断核心线程数是否都在执行任务:如果不是,那么需要创建一个线程来执行新提交的任务;如果所有的核心线程都在执行任务,那么 进入下一步。判断线程池中的工作队列是否已满。如果工作队列还没有满,那么新提交的任务就进入工作线程进行等待;如果原创 2021-03-17 12:33:57 · 151 阅读 · 4 评论 -
JUC包中的原子操作类
文章目录原子类操作1. 原子更新基本数据类型2. 原子更新数组3. 原子更新引用类型4. 原子更新字段类原子类操作JUC中的原子性操作类,都是使用非阻塞算法CAS实现的,相比使用锁实现原子操作在性能上有了较大的提升。Atomic原子类的底层源码://调用unsafe方法,原子性设置value值为原始值 +1,返回递增后的值public final long incrementAndGet() { return unsafe.getAndAddLong(this, valueOffset,原创 2021-03-17 01:11:59 · 415 阅读 · 0 评论 -
并发工具类
文章目录并发工具类1. CountDownLatch原理2. 同步屏障CyclicBarrier3. 信号量Semaphore4. 交换数据Exchanger并发工具类1. CountDownLatch原理背景: 在日常开发中会遇到这样的场景:需要在主线程中开启多个线程去执行任务,并且主线程需要等待所有子线程执行完后再进行汇总的场景。在CountDownLatch出现之前都是使用线程的join()方法来实现的,但是join()方法不够灵活,不能满足不同场景的需求,所以JDK提供了CountD原创 2021-03-16 20:51:22 · 97 阅读 · 1 评论 -
集合并发不安全问题
文章目录解决集合并发不安全问题1. List并发不安全2. Set并发不安全3. Map并发不安全解决集合并发不安全问题1. List并发不安全1、在并发环境下往list集合中添加或修改数据会出现ConcurrentModificationException异常(并发修改异常)方法一:使用vector集合List<String> list = new Vector<>();方法二:使用collections工具类List<E> list = Col原创 2021-03-16 20:47:26 · 129 阅读 · 2 评论 -
线程基础
文章目录1 进程与线程1.1 概念1.2 区别1.3 线程状态及转换1.4 常用的线程方法:1.5 什么是线程安全1.6 Java线程调度1.6.1 协同式调度1.6.2抢占式调度1.7 线程中断2 线程间通信2.1 等待—通知机制2.2 等待—通知范式2.3 管道输入 / 输出流2.4 ThreadLocal线程本地变量1 进程与线程1.1 概念进程:一个在内存中运行的应用程序。它是系统资源分配的基本单位(包括内存地址空间),因此各个进程拥有的内存地址空间相互独立。线程:进程中的一个执行任务(控原创 2021-03-13 00:18:53 · 508 阅读 · 3 评论 -
对Volatile的理解
文章目录对Volatile的理解 !!1. JMM:Java内存模型1.1 关于JMM的同步约定1.2 JMM中有八种操作(约定)1.3 JMM对上述八个指令的使用,规定了如下规则2.Volatile是jvm提供的最轻量级的同步机制2.1 保证可见性2.2 不保证原子性2.3 禁止指令重排对Volatile的理解 !!1. JMM:Java内存模型1.1 关于JMM的同步约定线程解锁前,必须把共享内存变量 立刻刷回主存。线程获取主存的变量并不是直接获取,而是拷贝一份放在自己的工作内存(每个线程拥有原创 2021-03-05 10:49:33 · 324 阅读 · 1 评论