
Java并发编程
1、基础理论
2、synchronized
3、volatile
4、cas
5、lock
6、ThreadLocal
7、并发容器
8、并发工具
9、ThreadPool
江城子v3
当你的才华不足以支撑你的野心时,就要静下心来努力学习!
展开
-
0、并发编程知识体系
并发编程是Java语言的重要特性之一,它能使复杂的代码变得更简单,从而极大的简化复杂系统的开发。 并发编程可以充分发挥多处理器系统的强大计算能力,随着处理器数量的持续增长,如何高效的并发变得越来越重要。原创 2020-07-19 19:58:57 · 191 阅读 · 0 评论 -
1、并发编程-基础篇
并发基础:线程安全、线程通信、死锁、饥饿;创建并启动线程、线程状态、线程调度原创 2020-09-19 19:01:33 · 112 阅读 · 0 评论 -
2、并发编程-理论篇
编写并发程序是比较困难的,因为并发程序极易出现Bug,这些Bug有都是比较诡异的,很多都是没办法追踪,而且难以复现。要快速准确的发现并解决这些问题,首先就是要弄清并发编程的本质,并发编程要解决的是什么问题。原创 2020-09-19 16:16:37 · 202 阅读 · 0 评论 -
3、synchronized实现原理
并发编程中用到最多的关键字毫无疑问是synchronized。那么,synchronized如何使用?synchronized是如何实现同步加锁的?synchronized解决了并发编程的哪些问题?原创 2020-09-19 19:06:26 · 216 阅读 · 0 评论 -
4、volatile实现原理
volatile可以保证线程可见性且提供了一定的有序性,但是无法保证原子性。在JVM底层volatile是采用“内存屏障”来实现的。通过汇编代码发现,加入volatile关键字时,会多出一个lock前缀指令,lock前缀指令实际上相当于一个内存屏障(也成内存栅栏)。原创 2020-09-19 19:19:58 · 314 阅读 · 0 评论 -
5、CAS原子操作
Java 中可以通过锁和 CAS 的方式来实现原子操作。但是synchronized 是一个重量级操作,性能较差,CAS 在保证原子性中有较好的性能。此外,synchronized 的优化中,偏向锁、轻量级锁也都用的到了 CAS。原创 2020-09-20 16:59:50 · 459 阅读 · 0 评论 -
6、Lock实现原理
当多个线程访问某个公共资源时,需要通过加锁来保证资源的访问不会出问题。java提供了两种方式来加锁,一种是关键字:synchronized,一种是concurrent包下的lock锁。实现lock的几个关键词:计数值、双向链表、CAS+自旋。原创 2020-09-20 17:34:13 · 136 阅读 · 0 评论 -
7、ThreadLocal实现原理
ThreadLocal 是一个线程的本地变量,也就意味着这个变量是线程独有的,是不能与其他线程共享的,这样就可以避免资源竞争带来的多线程的问题,这种解决多线程的安全问题和lock是有本质的区别的。原创 2020-09-20 21:57:43 · 136 阅读 · 0 评论 -
8、并发安全集合
JUC 为常用的集合提供了并发安全的版本,Map 的并发安全集合 ConcurrentHashMap,List 并发安全集合 CopyOnWriteArrayList,Set 并发安全集合 CopyOnWriteArraySet,Queue的并发安全的队列 ConcurrentLinkedQueue。原创 2020-09-20 22:06:37 · 119 阅读 · 0 评论 -
9、并发工具-CountDownLatch/CyclicBarrier/Semphore
JUC提供了几个非常有用的并发工具,包括CountDownLatch、CyclicBarrier、Semaphore,使用这些工具可以有效提高并发编程。原创 2020-09-20 22:09:11 · 121 阅读 · 0 评论 -
10、线程池实现原理
线程池由工作线程和任务队列组成,它可以重用线程来避免线程创建带来的开销,在任务过多时通过排队避免创建过多线程来减少系统资源消耗和竞争,确保任务有序完成。原创 2020-09-20 22:10:12 · 278 阅读 · 0 评论