在过去的时间中,我写过Java多线程与并发的整个系列。
为了方便大家的阅读,也为了让知识更系统化,这里我单独把Java多线程与并发的整个系列一并罗列于此,希望对有用的人有用,也希望能帮助到更多的人。
以下为整个目录,希望大家喜欢!
1:最全面的Java多线程学习概述
这一篇文章呢,我认为比较重要,学习任何一个东西,首先你得学会建立完整的技能框架,建……继续阅读 »
陈睿
10个月前 (03-18) 3103浏览 0评论
5个赞
我们继续Java多线程与并发系列之旅,之前我们分享了Synchronized 和 ReentrantLock 都是独占锁,即在同一时刻只有一个线程获取到锁。
然而在有些业务场景中,我们大多在读取数据,很少写入数据,这种情况下,如果仍使用独占锁,效率将及其低下。
针对这种情况,Java提供了读写锁——ReentrantReadWriteLock。
有点……继续阅读 »
陈睿
1年前 (2020-01-15) 2541浏览 0评论
4个赞
在并发编程领域,AQS号称是并发同步组件的基石,很多并发同步组件都是基于AQS实现,所以想掌握好高并发编程,你需要掌握好AQS。
本篇主要通过对AQS的实现原理、数据模型、资源共享方式、获取锁的过程,让你对AQS的整体设计有清晰了解,让你迈出高并发编程的第一步。
AQS
AQS(AbstractQueuedSynchronizer)就是一个抽象的队列同步器……继续阅读 »
陈睿
1年前 (2019-12-31) 3109浏览 0评论
3个赞
谈到多线程就不得不谈到Synchronized,很多同学只会使用,缺不是很明白整个Synchronized的底层实现原理,这也是面试经常被问到的环节,比如:
synchronized的底层实现原理
synchronized锁与JVM的实现
synchronized锁升级顺序
synchroni……继续阅读 »
陈睿
2年前 (2019-07-08) 4106浏览 2评论
2个赞
Java并发编程的技能基本涵括以下5方面:
多线程
线程池
线程锁
并发工具类
并发容器
多线程的4种创建方式
继承Thread
实现Runnable接口
实现Callable接口
……继续阅读 »
陈睿
2年前 (2019-07-04) 3401浏览 1评论
1个赞
在Java面试的时候,经常会问到Java并发编程相关的多线程、线程池、线程锁、线程通信等面试必考点,比如:
Java并发编程系列:Java线程池的使用方式,核心运行原理、以及注意事项
Java并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景
Java并发编程系列:CountDownLatch、Semaphore等4大并发工……继续阅读 »
陈睿
2年前 (2019-07-03) 3873浏览 0评论
1个赞
在Java并发场景中,会涉及到各种各样的锁,比如:高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景,这些锁有对应的种类:公平锁,乐观锁,悲观锁等等,这篇文章来详细介绍各种锁的分类:
公平锁/非公平锁
可重入锁
独享锁/共享锁
乐观锁/悲观锁
分段锁
自旋锁……继续阅读 »
陈睿
2年前 (2018-12-04) 6288浏览 0评论
13个赞
ConcurrentHashMap 的实现原理基本都是BAT面试必考内容,阿里P8架构师谈:深入探讨HashMap的底层结构、原理、扩容机制,深入谈过hashmap的实现原理以及在JDK 1.8的实现区别,今天主要谈ConcurrentHashMap的实现原理,以及在JDK1.7和1.8的区别。
为了彻底搞清楚ConcurrentHashMap的实现机制,我会先从它的底层数据实现:哈希表谈起……继续阅读 »
陈睿
2年前 (2018-11-14) 16317浏览 3评论
58个赞
之前谈过高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景 ,以及高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)
今天主要介绍concurrent包的内容以及4大并发工具类。
Java并发工具包
1.并发工具类
提供了比synchroni……继续阅读 »
陈睿
2年前 (2018-11-13) 5903浏览 1评论
10个赞
之前谈过高并发编程系列:
高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景
高并发编程系列:CountDownLatch、Semaphore等4大并发工具类详解
高并发编程系列:4大JVM性能分析工具详解,及内存泄漏分析方案
高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)
……继续阅读 »
陈睿
2年前 (2018-11-09) 6457浏览 0评论
14个赞
多线程的缘由
在出现了进程之后,操作系统的性能得到了大大的提升。虽然进程的出现解决了操作系统的并发问题,但是人们仍然不满足,人们逐渐对实时性有了要求。
使用多线程的理由之一是和进程相比,它是一种非常花销小,切换快,更"节俭"的多任务操作方式。
在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立……继续阅读 »
陈睿
2年前 (2018-11-07) 14171浏览 1评论
25个赞
为什么需要线程池
我们有两种常见的创建线程的方法,一种是继承Thread类,一种是实现Runnable的接口,Thread类其实也是实现了Runnable接口。但是我们创建这两种线程在运行结束后都会被虚拟机销毁,如果线程数量多的话,频繁的创建和销毁线程会大大浪费时间和效率,更重要的是浪费内存。那么有没有一种方法能让线程运行完后不立即销毁,而是让线程重复使用,继续执行其他的任……继续阅读 »
陈睿
2年前 (2018-10-20) 9202浏览 2评论
20个赞
Java实现线程有哪几种方式?
1、继承Thread类实现多线程
2、实现Runnable接口方式实现多线程
3、使用ExecutorService、Callable、Future实现有返回结果的多线程
多线程同步有哪几种方法?
Synchronized关键字,Lock锁实现,……继续阅读 »
陈睿
2年前 (2018-09-20) 8624浏览 6评论
61个赞