
Java 多线程
文章平均质量分 77
该栏目讲叙多线程基础、共享模型的内存、管程、无锁、不可变设计和多线程并发工具
HadesLin
这个作者很懒,什么都没留下…
展开
-
7、共享模型之J.U.C
该栏目讲叙多线程基础、共享模型的内存、管程、无锁、不可变设计和多线程并发工具文章目录AQS 原理读写锁1、ReentrantReadWriteLock2、StampedLockSemaphoreCountdownLatchCyclicBarrier线程安全集合类1、ConcurrentHashMap2、ConcurrentLinkedQueue3、CopyOnWriteArrayListAQS 原理概述:全称 AbstractQueuedSynchronizer,该同步器利用了一个 int 来表示原创 2021-07-17 00:38:55 · 156 阅读 · 1 评论 -
6、共享模型之线程池
该栏目讲叙多线程基础、共享模型的内存、管程、无锁、不可变设计和多线程并发工具文章目录自定义线程池1、背景2、图解3、实现ThreadPoolExecutor1、线程池状态2、构造方法3、成员方法4、案例Executors 工具类1、常用方法2、案例Fork & Join1、概述2、案例自定义线程池1、背景:线程是一种系统资源,每创建一个线程都要占用一定的内存。在高并发的情况下,如果为每个任务都创建一个新的线程,对内存的占用是相当大的;从CPU的角度出发,CPU的数量有限,如果线程数越多,原创 2021-07-17 00:20:49 · 406 阅读 · 1 评论 -
5、共享模型之不可变
该栏目讲叙多线程基础、共享模型的内存、管程、无锁、不可变设计和多线程并发工具文章目录不可变类的设计无状态类的设计享元模式不可变类的设计设计原则final 的使用属性用 final 修饰保证了该属性是只读的,不能修改类用 final 修饰保证了该类中的方法不能被覆盖,防止子类无意间破坏不可变性保护性拷贝:通过创建副本对象来避免共享问题(Arrays.copyOf())缺点:由于保护性拷贝会产生大量副本,这样会增加内存的负担,可以关联享元模式思想设计无状态类的设计:在设置类的原创 2021-07-16 23:26:46 · 108 阅读 · 0 评论 -
4、共享模型之无锁
该栏目讲叙多线程基础、共享模型的内存、管程、无锁、不可变设计和多线程并发工具文章目录CAS机制1、简介2、原理3、案例原子整型原子布尔型原子引用原子数组字段更新器原子累加器CAS机制1、简介概述:CAS,是 Compare and Swap 的简称,即比较并替换,是乐观锁的一种体现优点可以保证变量操作的原子性并发量不是很高的情况下,使用 CAS 机制比使用锁机制效率更高在线程对共享资源占用时间较短的情况下,使用 CAS 机制效率也会较高(synchronized 会让线程在没有获得锁的原创 2021-07-16 23:20:07 · 123 阅读 · 1 评论 -
3、共享模型之内存
该栏目讲叙多线程基础、共享模型的内存、管程、无锁、不可变设计和多线程并发工具文章目录Java 内存模型可见性1、举例2、分析3、解决方法有序性happens-before 原则volatile 原理Java 内存模型概述:JMM 是一种规范,目的是解决由于多线程通过共享内存进行通信时,存在的本地内存数据不一致、编译器会对代码指令重排序、处理器会对代码乱序执行等带来的问题特点原子性 - 保证指令不会受到线程上下文切换的影响可见性 - 保证指令不会受 cpu 缓存的影响有序性 - 保证指令不原创 2021-07-16 23:08:15 · 136 阅读 · 0 评论 -
2、共享模型之管程
该栏目讲叙多线程基础、共享模型的内存、管程、无锁、不可变设计和多线程并发工具文章目录多线程共享同一资源问题1、问题简述2、问题举例3、问题分析4、相关概念5、线程安全分析6、解析方案7、synchronized 解决方案对象头Monitorsynchronized 优化原理1、轻量级锁2、锁膨胀3、自旋优化4、偏向锁5、锁清除等待唤醒机制park & unpark活跃性ReentrantLock多线程共享同一资源问题1、问题简述:多个线程同时共享一个成员变量,且都对该变量进行非原子性的写原创 2021-07-16 22:56:15 · 152 阅读 · 1 评论 -
1、多线程基础
该栏目讲叙多线程基础、共享模型的内存、管程、无锁、不可变设计和多线程并发工具文章目录相关概念1、程序2、进程3、线程4、进程与线程对比5、并发和并行创建线程1、New 方式2、Runnable 方式3、FutureTask 方式线程运行原理1、栈与栈桢2、线程上下文常用 API1、启动线程:start2、线程休眠:sleep3、线程礼让:yield4、设置优化级:setPriority5、线程加入:join6、线程中断6、守护线程:setDaemon7、案例:常用 API 的使用线程状态1、线程的五种状态原创 2021-07-16 15:28:46 · 228 阅读 · 0 评论