首页
首页
沸点
课程
直播
活动
竞赛
商城
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Java 并发以及并发包JUC
KittyGuy
创建于2021-06-20
订阅专栏
深入理解Java 并发以及并发包JUC的使用。看专栏时按发布时间远到近顺序观看。
等 6 人订阅
共20篇文章
创建于2021-06-20
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Java 并发之CompletionService
前言 CompletionService的功能 一种将新异步任务的产生与已完成任务的结果的消耗分离的服务。 生产者submit任务以供执行。 消费者take已完成的任务并按照他们完成的顺序处理他们的结
Java 并发之 ForkJoinPool
前言 Fork/Join的使用场景 Java提供Fork/Join框架用于并行执行任务,它的思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果得到这个大任务的结果。 主要有两步: 第一、任
Java 并发之ThreadPoolExecutor线程池
前言 何谓线程池 一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。 线程池不
Java并发之AQS与ConditionObject
前言 本篇是前两篇的续集 AQS与ReentrantLock AQS与ReentrantReadWriteLock AQS大致结构图 前面讲解的可重入锁和可重入读写锁都是围绕着阻塞队列讲解的。 没有提
Java 并发之AQS与ReentrantReadWriteLock
书接上文 ReentrantReadWriteLock样例 不厌其烦的阅读jdk源码 ReadWriteLock接口 其中一个实现类ReentrantReadWriteLock 构造方法和成员变量 A
Java 并发之AQS与ReentrantLock
前言 宏观了解AQS AQS是AbstractQueuedSynchronizer类(抽象的队列同步器)的缩写 实现了读锁和写锁的分离 与synchronized关键字底层实现相似度较高(80%以上)
Java 并发之ThreadLocal和内存泄漏
ThreadLocal的作用 是一个线程内部的存储类 本质上,ThreadLocal是通过空间来换取时间,从而实现每个线程当中都会有一个变量的副本,这样每个线程就都会操作该副本,从而完全规避了多线程的
Java 并发之Future模式(异步)
异步和同步 异步 异步的含义是计算机多线程的异步处理。与同步处理相对,异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程,获取此线程的结果。 但此处需要
Java 并发之CAS概念以及Atomic**类
前言 CAS的应用场景 悲观锁:synchronized关键字与Lock等锁机制都是悲观锁。无论做何种操作,首先都需要先上锁,接下来再去执行后续操作,从而确保了接下来的所有操作都是由当前这个线程来执行
Java 并发包之CyclicBarrier
前言 CyclicBarrier适用场景 需要多个线程都到达某一点,或某一阶段,再继续 相当于多个线程到齐了,才能继续 样例 另外一些样例 分批通过屏障 无限等待的情况 CyclicBarrier(i
Java 并发包之CountDownLatch
前言 CountDownLatch适用场景 一个主任务由多个子任务组成 主任务需要等待子任务完成才能继续执行 在正常情况下,主线程是不会等待子线程的 代码 使用CountDownLatch Count
Java 并发之volatile关键字
volatile关键字的作用 关键作用 保持内存可见性:所有线程都能看到共享内存的最新状态。 防止指令重排:保证代码变成机器指令时顺序不变。 保证对某些类型的操作具有原子性,如,long和double
Java并发包Condition样例
该样例根据Condition接口中文档注释样例改编 大致内容 创建一个有界容器,大小为10 有两个方法 一个用来存(put),没满的情况下 一个用来取(take),在有内容存在的情况下 代码 结果 最
Java并发包之Condition接口
前言 传统上,我们可以通过synchronized关键字 + wait + notify/notifyAll来实现多个线程之间的协调与通信,整个过程都是由JVM来帮助我们实现的;开发者无需(也是无法)
Java并发包之Lock接口的实现类ReentrantLock
ReentrantLock称之为可重入锁 是Lock的实现类,其中方法的功能已经介绍过了,不在赘述。 先上代码尝尝鲜 常规版 结果: 如果把f1()中lock.unlock();注释掉,会如何? 代码
Java 并发包之Lock接口
何谓Lock 它是java.util.concurrent.locks包下的一个类 老样子,来通过官方文档来详细了解Lock是什么以及怎么用 Lock提供了比使用synchronized方法和语句块更
Java 并发之死锁以及使用工具检测死锁
死锁相关 详情 活锁:线程持续重试一个总是失败的操作,导致无法继续执行 饿死∶线程一直被调度器延迟访问其赖以执行的资源,也许是调度器先于低优先级的线程而执行高优先级的线程,同时总是会有一个高优先级的线
Java 并发之底层理论
需要了解操作系统的知识 管程 临界资源 信号量 内核态和用户态,以及什么时候互相切换 大致介绍一下Java 的底层C++写的ObjectMonitor 详见 openjdk源码,里面的C++代码,有有
Java 并发之synchronized关键字深入
先从无synchronized 说起 观察如下代码 运行结果 从结果可知 两个线程会同时得到x = 0这个状态,说明x可被多个线程共享 相同数字只会出现两次 一个线程修改了值,其他线程可以得到被修改后
Java 并发之wait和notify
理论知识 理论知识来自Java文档 题外话 并发离不开硬件的支持,首先cpu得多核 线程由操作系统管理的 Thread和Runable大家都会创建和使用,不再赘述 来扣细节 线程优先级相关 一个线程创