
多线程与高并发
文章平均质量分 80
sixabs
I am a coder, code my life.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java并发编程可见性问题
介绍了可见性问题的产生,什么是可见性,可见性问题如何解决的。原创 2022-10-30 17:24:30 · 547 阅读 · 1 评论 -
《Java并发编程实战》笔记5:基础构建
1 同步容器类 有哪些同步容器。同步容器类包括Vector、Stack、HashTable和Collections.synchronizedXxx工厂方法创建的容器。 实现同步的方式。Vector、Stack、HashTable直接在方法上加synchronized关键字实现同步。Collections.synchronizedXxx通过定义一系列内部类SynchronizedXxx实现Synch...原创 2019-09-29 10:41:25 · 145 阅读 · 0 评论 -
《Java并发编程实战》笔记4:对象的组合
1 如何设计一个线程安全的类? 在设计线程安全类的过程中,需要包含以下三个基本要素: 找出构成对象状态的所有变量 找出约束状态变量的不变性条件,后验条件 建立对象状态的并发访问管理策略 2 什么是实例封闭 实例封闭机制(Instance Confinement)将一个对象X(通常非线程安全)封装到另一个对象A内部,只能通过A的方法访问X,并通过A的内置锁对方法加锁,则可以实现访问对象X的线程安...原创 2019-08-18 16:46:19 · 177 阅读 · 0 评论 -
《Java并发编程实战》笔记3:对象的共享
1 什么是可见性,再说说volatile变量 JVM内存模型时总结了 2 什么是对象的发布与逸出? 发布(Publish):一个对象是指,使对象能够在当前作用域之外的代码中使用。 逸出(Escape):是一种错误的发布, 当一个对象还没有构造完成时 , 就使得它被其他线程看见。 3 发布对象的几种情形 (1) 将对象的引用保存到一个公有的静态变量中 (2) 如果一个已经发布的对象能够通过非私有的变...原创 2019-08-18 16:31:16 · 164 阅读 · 0 评论 -
JUC包都有哪些内容
1 atomic包 核心是CAS,主要提供了一系列原子变量更新操作的类,提供非阻塞式算法基础。 2 locks包 主要提供了显示锁,如重入锁(ReentrantLock)和读写锁(ReadWriteLock)。核心是AQS这个抽象队列同步器框架。J.U.C包中很多工具类都是基于AQS实现的,如 3 并发容器 4 执行框架与线程池 5 并发工具类 ...原创 2019-08-04 18:46:16 · 16082 阅读 · 0 评论 -
J.U.C之locks包
先放上我花了1小时画的图,看完之后对java.utils.concurrent.locks包有个大致印象 注意:此图是我自己画的,转载此图请注明出处,加上此图原文链接原创 2019-06-25 11:56:34 · 178 阅读 · 0 评论 -
《Java并发编程实战》笔记2:线程安全性
共享(Shared) — 变量可以由多个线程同时访问 可变(Mutable) — 变量的值在生命周期内可以发生变化 Java中的同步机制 — synchronized,volatile,显式锁(Explicit Lock),原子变量。 如何修复没有同步的可变的状态变量? 不在线程之间共享该状态变量 将状态变量修改问不可变的变量 在访问状态变量时使用同步 当设计线程安全的类时,良好的面向对...原创 2019-06-18 11:45:42 · 174 阅读 · 0 评论 -
《Java并发编程实战》笔记1:简介
为什么要使用并发? 提高资源利用率,程序执行的公平性,编写程序便利性。 线程的优势? 发挥多处理器的强大能力; 建模简单性,降低程序开发和维护成本; 异步事件简化处理处理; 响应更灵敏的用户界面。 线程带来的风险? 安全性问题:多个线程执行顺序是非常复杂的,如果实现不当很可能带来安全性问题; 活跃性问题:如死锁,饥饿以及活锁等。 性能问题:频繁的线程切换和调度将会导致更多的CPU资源消耗在这...原创 2019-06-18 10:51:09 · 142 阅读 · 0 评论 -
J.U.C之atomic包
本文从现在器专门收集一些讲解Java相关知识点的博客,整理成一个目录,以供以后翻看查阅。 1 集合类 知识点名称 链接地址 知识点名称 链接地址 ...原创 2019-06-23 12:14:22 · 156 阅读 · 0 评论 -
Java中CAS原理
引例:在执行i++;操作时由于不是原子操作,所以我们需将该复合操作进行加锁来保证该操作的原子性。一种方法是采用悲观锁策略synchronized关键字,另一种更高效的方法是采用硬件支撑的CAS(Compare-and-Swap)操作来实现。 CAS操作其实对应了硬件处理器底层的一个一个3操作数指令。在Java中该操作由sun.misc.Unsafe类里面的compareAndSwap***()提供...原创 2019-06-23 11:07:11 · 1095 阅读 · 0 评论