Java并发
文章平均质量分 94
程序员囧辉
微信搜索【程序员囧辉】,领取本人原创大厂高频面试题 PDF、简历模板、进学习交流群。对技术有极致的追求,致力于写出小白也能看得懂的文章。
展开
-
《性能优化》并发与并行
性能优化利器原创 2021-11-08 08:15:00 · 2982 阅读 · 8 评论 -
全网最硬核的 synchronized 面试题深度解析
全网最硬核的 synchronized 解析原创 2021-06-06 22:57:11 · 16274 阅读 · 48 评论 -
面试必问的线程池,你懂了吗?
面试必问的线程池,你懂了吗?原创 2020-06-08 09:16:59 · 53704 阅读 · 37 评论 -
Java并发:线程池详解(ThreadPoolExecutor)
前言现在在实现异步时,基本都是使用线程池来实现,线程池在工作应用的还是比较频繁的,本文将就线程池的使用、相关原理和主要方法源码进行深入讲解学习。线程池的基本使用package com.joonwhee.concurrent;import java.util.ArrayList;import java.util.List;import java.util.concurre...原创 2018-01-21 23:40:01 · 11795 阅读 · 3 评论 -
Java并发:volatile关键字详解
概述volatile关键字可以说是Java虚拟机提供的最轻量级的同步机制,但是它并不容易完全被正确、完整地理解,以至于许多程序员都习惯不去使用它,遇到需要处理多线程数据竞争问题的时候一律使用synchronized来进行同步。了解volatile变量的语义对了解多线程操作的其他特性很有意义,在本文中我们将介绍volatile的语义到底是什么。由于volatile关键字与Java内存模型(Jav...原创 2018-03-04 17:18:49 · 14090 阅读 · 26 评论 -
Java并发:ThreadLocal详解
前言ThreadLocal的作用是提供线程内的局部变量,这种变量在多线程环境下访问时能够保证各个线程里变量的独立性。ThreadLocal无论在项目开发还是面试中都会经常碰到,本文就ThreadLocal的使用、主要方法源码详解、内存泄漏问题展开讨论。1.基本使用package com.joonwhee.imp;/** * demo * @author joonwhee...原创 2017-12-02 22:20:19 · 18209 阅读 · 11 评论 -
Java并发:Condition详解
概述任意一个Java对象,都拥有一组监视器方法(定义在java.lang.Object上),主要包括wait()、wait(long timeout)、notify()以及notifyAll()方法,这些方法与synchronized同步关键字配合,可以实现等待/通知模式。Condition接口也提供了类似Object的监视器方法,与Lock配合可以实现等待/通知模式,但是这两者在使用方式以及功能...原创 2018-02-13 16:21:57 · 4105 阅读 · 2 评论 -
单例模式详解
概述单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,使用单例模式的类只有一个对象实例。单例应用场景Windows系统的任务管理器。Windows系统的回收站。操作系统的文件系统,一个操作系统只能有一个文件系统。数据库连接池的设计与实现。多线程的线程池设计与实现。Spring中创建的Bean实例默认都是单例。Java-Web中,一个Ser...原创 2018-03-10 19:31:17 · 5040 阅读 · 4 评论 -
面试必问的CAS,你懂了吗?
面试必问的CAS,你懂了吗?原创 2018-03-14 22:29:19 · 155593 阅读 · 80 评论 -
Java并发:AbstractQueuedSynchronizer详解(独占模式)
概述AQS(AbstractQueuedSynchronizer)是一个用于构建锁和同步器的框架,许多同步器都可以通过AQS很容易并且高效地构造出来。不仅ReentrantLock和Semaphore是基于AQS构建的,还包括CountDownLatch、ReentrantReadWriteLock、SynchronousQueue和FutureTask。AQS解决了在实现同步器时涉及的大...原创 2018-02-10 19:34:54 · 7406 阅读 · 9 评论 -
Java并发:性能与可伸缩性
概述编写正确的程序很难,而编写正确的并发程序则难上加难。与串行程序相比,在并发程序中存在更多容易出错的地方。那么,为什么还要编写并发程序?线程是Java语言中不可或缺的重要功能,它们能使复杂的异步代码变得更简单,从而极大地简化了复杂系统的开发。此外,要想充分发挥多处理器系统的强大计算能力,最简单的方式就是使用线程。随着处理器数量的持续增长,如何高效地使用并发正变得越来越重要。线程的最主要目的是提高...原创 2018-01-28 20:36:15 · 7865 阅读 · 1 评论 -
Java并发:线程安全与锁优化
概述人们很难想象现实中的对象在一项工作进行期间,会被不停地中断和切换,对象的属性(数据)可能会在中断期间被修改和变“脏”,而这些事情在计算机世界中则是很正常的事情。有时候,良好的设计原则不得不向现实做出一些让步,我们必须让程序在计算机中正确无误地运行,然后再考虑如何将代码组织得更好,让程序运行更快。对于“高效并发”来说,首先需要保证并发的正确性,然后在此基础上实现高效。1.线程安全《Java Co...原创 2018-01-01 18:25:15 · 4144 阅读 · 0 评论 -
Java并发:Java内存模型(JMM)与线程
概述多任务处理在现代计算机操作系统中几乎已是一项必备的功能了。在许多情况下,让计算机同时去做几件事情,不仅是因为计算机的运算能力强大了,还有一个很重要的原因是计算机的运算速度与它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O、网络通信或者数据库访问上。如果不希望处理器在大部分时间里都处于等待其他资源的状态,就必须使用一些手段去把处理器的运算能力“压榨”出来,否则就会造成很大的浪费,...原创 2017-12-31 17:15:11 · 3895 阅读 · 1 评论 -
Java并发:InheritableThreadLocal详解
概述最新看项目代码时, 发现有地方用到了InheritableThreadLocal,之前只用过ThreadLocal,于是就查了点资料,看了下源码,稍微学习一下。InheritableThreadLocal是ThreadLocal的子类,可以先了解下ThreadLocal:Java并发:ThreadLocal详解1.定义InheritableThreadLocal继承了ThreadLocal,此...原创 2018-01-20 22:48:01 · 12200 阅读 · 1 评论 -
Java并发:同步工具类详解(CountDownLatch、CyclicBarrier、Semaphore)
概述同步工具类可以是任何一个对象,只要它根据其自身的状态来协调线程的控制流。阻塞队列可以作为同步工具类,其他类型的同步工具类还包括信号量(Semaphore)、栅栏(Barrier)以及闭锁(Latch)。本文就目前常用的3种同步工具类进行简单介绍。闭锁闭锁是一种同步工具类,可以延迟线程的进度直到其到达终止状态。闭锁的作用相当于一扇门:在闭锁到达结束状态之前,这扇门一直是关闭的,并且没有任何线程能...原创 2018-01-27 19:02:38 · 3478 阅读 · 0 评论