
多线程与高并发
此专栏作为个人本地MarkDown文档的云端存储。如果有幸能给各位带来些许帮助,欢迎点赞、评论、转发,让更多人能看到,转载标明出处即可。
专栏文章有先后逻辑顺序,建议以先后顺序来读会更有脉络。
如有侵权,私聊删除。
执拗如少年
热爱可抵岁月漫长!
学而不思则罔,思而不学则殆!
争取做到每周更新一篇高质量博客!
由于参加实习,博客整理暂时没有精力,后续可能会更换博客平台!
展开
-
多线程/并发编程——国庆期间肝了三天两万字的线程池详解
文章目录一、Executor二、ExecutorService三、Callable、Future和FutureTask1、Callable接口2、Future接口3、FutureTask类四、Executor框架整体结构五、ThreadPoolExecutor1、FixedThreadPool2、CachedThreadPool3、SingleThreadPool六、ScheduledThreadPoolExecutor1、ScheduledThreadPool七、ForkJoinPool1、ForkJo.原创 2020-10-09 10:07:26 · 574 阅读 · 6 评论 -
多线程/并发编程——阻塞队列(简要)
文章目录一、阻塞队列概述二、ArrayBlockingQueue三、LinkedBlockingQueue三、DelayQueue四、SynchronusQueue在本篇文章中,我们将会对 Java 并发中的同步(阻塞)队列做基本的简要总结。虽然在高并发情况下,我们也并不会真的手动使用这些容器来存放数据,但是高并发情况下我们一定都是会使用线程池的,而不同的线程池,其底层对于任务的处理都是依赖于不同的同步队列器来实现的,所以对于阻塞队列器的学习,最起码有一个简单的了解还是很有必要的。由于笔者目前还是在.原创 2020-10-07 21:26:11 · 668 阅读 · 0 评论 -
多线程/并发编程——面试再也不怕 ThreadLocal 了
文章目录一、什么是ThreadLocal二、使用示例三、源码解析1、set() 方法2、get() 方法3、Entry 内部类4、remove() 方法四、ThreadLocal的应用1、声明式事务五、ThreadLocal的内存泄漏1、ThreadLocal 会有内存泄漏吗?2、内存泄漏的解决在前面的文章中,我们已经知道了线程安全及实现机制:多线程——线程安全及实现机制,在 Java 中主要从以下三个方面来实现线程安全:互斥(阻塞)同步:多线程——深入剖析 Synchronized、多线程\并发编程原创 2020-10-06 17:17:53 · 500 阅读 · 1 评论 -
多线程/并发编程——同步工具类(CountDownLatch、Semaphore、ReadWriteLock、CyclicBarrier )
多线程/并发编程——同步工具类文章目录多线程/并发编程——同步工具类一、CountDownLatch二、Semaphore三、ReadWriteLock四、CyclicBarrier上一篇文章中,我们详细剖析了并发工具包 J.U.C 的底层实现 AQS 的细节,不过只解释了基于 AQS 的最常用的同步工具锁 ReentrantLock。诚然 ReentrantLock 是很常用、很重要的一个同步工具类。不过基于 AQS 其实还有很多同步工具类,下面我们就来学习一下这些同步工具类的简单实用本篇文章中只原创 2020-10-04 20:59:20 · 621 阅读 · 2 评论 -
多线程/并发编程——两万字详解AQS
多线程/并发编程——并发锁的底层实现AQS详解文章目录多线程/并发编程——并发锁的底层实现AQS详解一、AQS概要1、AQS 概念2、AQS 的同步队列模型二、状态位 state三、Node 节点四、出入同步队列的实现--CAS五、基于CountDownLatch分析AQS共享模式的实现六、基于ReentrantLock分析AQS独占模式的实现1、ReentrantLock 与 AQS 的关系2、ReentrantLock非公平锁的实现3、ReentrantLock非公平锁的实现在前面我们学习 Reen原创 2020-09-23 09:57:22 · 625 阅读 · 2 评论 -
多线程/并发编程——CAS、Unsafe及Atomic
多线程/并发编程——CAS、Unsafe及Atomic文章目录多线程/并发编程——CAS、Unsafe及Atomic一、无锁CAS1、无锁的执行者——CAS2、CAS 的缺陷——ABA问题二、CAS 的使用支持——Unsafe三、Java 中 CAS 操作的使用——原子类 Atomic1、原子更新基本类型2、原子更新引用、数组、属性在前面的文章中,我们已经知道了线程安全及实现机制:多线程——线程安全及实现机制,在 Java 中主要从以下三个方面来实现线程安全互斥同步:多线程——深入剖析 Synchr原创 2020-09-06 16:03:47 · 297 阅读 · 0 评论 -
多线程\并发编程——ReentrantLock 详解
多线程\并发编程——ReentrantLock 详解文章目录多线程\并发编程——ReentrantLock 详解一、ReentrantLock 的基本使用1、锁的可重入性语义2、lock() 和 unLock()3、tryLock() -- 尝试加锁4、lockInterruptibly() -- 等待可中断5、公平锁6、Condition--锁绑定多个条件二、ReentantLock 的底层实现—AQS三、ReentantLock 与 Synchronized 的异同(面试常问)1、相同点2、不同点1、原创 2020-09-03 08:48:56 · 739 阅读 · 1 评论 -
多线程——深入剖析 Synchronized
多线程——Synchronized 详解文章目录多线程——Synchronized 详解一、Synchronzized 的三种使用方式1、Synchronzized 作用于实例方法2、Synchronized 作用于静态方法3、Synchronized 作用于代码块二、Synchronized 的底层语义原理1、Synchronized 的语义原理2、Synchronized 的局限三、JVM 对 Synchronized 的优化1、轻量级锁2、自旋锁3、偏向锁4、总结 Synchronized 的锁升级原创 2020-08-25 12:20:23 · 630 阅读 · 0 评论 -
多线程——线程安全及实现机制
多线程——线程安全及实现机制文章目录多线程——线程安全及实现机制一、线程安全概念二、Java 语言中的线程安全1、不可变2、绝对线程安全3、相对线程安全(重要)4、线程兼容三、线程安全的实现机制1、互斥同步(Synchronized、Reentrantlock)2、非阻塞同步(CAS、原子类)3、无同步方案(ThreadLocal)四、总结一、线程安全概念讨论线程安全,需要以多个线程之间存在共享数据访问为前提。因为如果根本不存在多线程,又或者一段代码根本不会与其他线程共享数据,那么从线程安全的角度来看原创 2020-08-23 22:20:41 · 740 阅读 · 0 评论 -
多线程——Volatile 关键字详解
多线程——Volatile 关键字文章目录多线程——Volatile 关键字一、概念二、Volatile保证可见性三、Volatile禁止指令重排序四、总结一、概念在前一篇文章中,我们详细介绍了 Java 内存模型,我们可以发现 Java 内存模型都是围绕着在并发过程中如何处理原子性、可见性和有序性三个特征来建立的,简单回顾一下为什么会产生这三个特性:原子性:比如一段代码运行在服务器,有一段代码会被所有线程访问,每一个线程都会修改里面的共享变量值,为了保证一个线程在修改的时候,其他的线程不会进来捣原创 2020-08-22 23:02:52 · 618 阅读 · 1 评论 -
多线程—Java内存模型与线程
Java内存模型与线程一、概述由于计算机的 CPU 运算速度与它的存储和通信子系统的速度差距过大,大量的时间都花费在磁盘I/O、网络通信或者数据库访问上。如果不希望 CPU 大部分时间处于等待其他资源的闲置状态,想要充分利用 CPU 的高速运算性能,就会让计算机同时处理多项任务,“压榨” CPU的运算性能。除了充分利用 CPU 的性能之外,一个服务端要同时对多个客户端提供服务,则是另一个更具体地并发场景。对于计算量相同地任务,程序线程并发协调地有条不紊,效率自然就会越高;反之,线程之间频繁争用数据,互原创 2020-08-16 22:42:15 · 390 阅读 · 0 评论