![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java多线程
liuhuiteng
这个作者很懒,什么都没留下…
展开
-
Java多线程系列(六):深入详解Synchronized同步锁的底层实现
谈到多线程就不得不谈到Synchronized,很多同学只会使用,缺不是很明白整个Synchronized的底层实现原理,这也是面试经常被问到的环节,比如: synchronized的底层实现原理 synchronized锁与JVM的实现 synchronized锁升级顺序 synchronized锁的优劣势与应用场景 今天主要分享以上内容,详解synchronized的底层实现,多线程相关的可以参考: Java多线程系列教程:线.原创 2020-05-28 09:08:19 · 397 阅读 · 0 评论 -
Java多线程系列(十一):ReentrantReadWriteLock的实现原理与锁获取详解
我们继续Java多线程与并发系列之旅,之前我们分享了Synchronized 和 ReentrantLock 都是独占锁,即在同一时刻只有一个线程获取到锁。 然而在有些业务场景中,我们大多在读取数据,很少写入数据,这种情况下,如果仍使用独占锁,效率将及其低下。 针对这种情况,Java提供了读写锁——ReentrantReadWriteLock。 有点类似MySQL数据库为代表的读写分离机制,既然我们知道了读写锁是用于读多写少的场景。那问题来了,ReentrantReadWriteLock.原创 2020-05-20 09:04:19 · 322 阅读 · 0 评论 -
史上最强多线程面试44题和答案:线程锁+线程池+线程同步等
最全BAT必考题答案系列 最全MySQL面试60题和答案 史上最全Spring面试71题与答案 史上最全Redis面试49题(含答案):哨兵+复制+事务+集群+持久化等 分布式缓存Redis+Memcached经典面试题和答案 最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁 Java并发编程系列:深入详解Synchronized同步锁的底层实现 高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景 高并发编程...原创 2020-05-20 08:58:42 · 302 阅读 · 0 评论 -
Java多线程系列(四):4种常用Java线程锁的特点,性能比较、使用场景
多线程的缘由 在出现了进程之后,操作系统的性能得到了大大的提升。虽然进程的出现解决了操作系统的并发问题,但是人们仍然不满足,人们逐渐对实时性有了要求。 使用多线程的理由之一是和进程相比,它是一种非常花销小,切换快,更”节俭”的多任务操作方式。 在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种”昂贵”的多任务工作方式。而在进程中的同时运行多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线...原创 2020-05-20 08:53:09 · 425 阅读 · 0 评论 -
Java多线程系列(七):并发容器的原理,7大并发容器详解、及使用场景
之前谈过高并发编程系列: 高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景 高并发编程系列:CountDownLatch、Semaphore等4大并发工具类详解 高并发编程系列:4大JVM性能分析工具详解,及内存泄漏分析方案 高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8) Java并发编程系列:深入详解Synchronized同步锁的底层实现 今天详细介绍并发容器的实现原理,与同步容器的区别等。 ..原创 2020-05-20 08:47:33 · 297 阅读 · 0 评论 -
Java多线程系列(九):CountDownLatch、Semaphore等4大并发工具类详解
之前谈过高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景,以及高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8) 今天主要介绍concurrent包的内容以及4大并发工具类。 Java并发工具包 1.并发工具类 提供了比synchronized更加高级的各种同步结构:包括CountDownLatch、CyclicBarrier、Semaphore等,可以实现更加丰富的多线程操作。 2.并发容器 ...原创 2020-05-20 08:41:59 · 541 阅读 · 0 评论 -
Java多线程系列(八):ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)
HashMap、CurrentHashMap 的实现原理基本都是BAT面试必考内容,阿里P8架构师谈:深入探讨HashMap的底层结构、原理、扩容机制深入谈过hashmap的实现原理以及在JDK 1.8的实现区别,今天主要谈CurrentHashMap的实现原理,以及在JDK1.7和1.8的区别。 内容目录: 1.哈希表 2.ConcurrentHashMap与HashMap、HashTable的区别 3.CurrentHashMap在JDK1.7和JDK1.8版本的区.原创 2020-05-20 08:36:24 · 415 阅读 · 0 评论 -
Java多线程系列(一):最全面的Java多线程学习概述
Java并发编程的技能基本涵括以下5方面: 多线程 线程池 线程锁 并发工具类 并发容器 多线程的4种创建方式 继承Thread 实现Runnable接口 实现Callable接口 以及线程池来创建线程 Java线程的生命周期 线程的创建 线程的就绪 线程的运行 线程的阻塞 线程的死亡 Java线程的通信与协作 、 1.线程就绪:调用start(),.原创 2020-05-20 08:30:50 · 297 阅读 · 0 评论 -
Java多线程系列(二):线程的五大状态,以及线程之间的通信与协作
在Java面试的时候,经常会问到Java并发编程相关的多线程、线程池、线程锁、线程通信等面试必考点,比如: Java并发编程系列:Java线程池的使用方式,核心运行原理、以及注意事项 Java并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景 Java并发编程系列:CountDownLatch、Semaphore等4大并发工具类详解 高并发编程系列:ConcurrentHashMap的实现原理(JDK1.7和JDK1.8) 史上最强多线程面试44题和答案:..原创 2020-05-20 08:25:13 · 210 阅读 · 0 评论 -
Java多线程系列(三):Java线程池的使用方式,及核心运行原理
之前谈过多线程相关的4种常用Java线程锁的特点,性能比较、使用场景,今天主要分享线程池相关的内容,这些都是属于Java面试的必考点。 为什么需要线程池 java中为了提高并发度,可以使用多线程共同执行,但是如果有大量线程短时间之内被创建和销毁,会占用大量的系统时间,影响系统效率。 为了解决上面的问题,java中引入了线程池,可以使创建好的线程在指定的时间内由系统统一管理,而不是在执行时创建,执行后就销毁,从而避免了频繁创建、销毁线程带来的系统开销。 线程池如何使用,以及实现.原创 2020-05-20 08:19:37 · 396 阅读 · 0 评论 -
Java多线程系列(五):线程池的实现原理、优点与风险、以及四种线程池实现
为什么需要线程池 我们有两种常见的创建线程的方法,一种是继承Thread类,一种是实现Runnable的接口,Thread类其实也是实现了Runnable接口。但是我们创建这两种线程在运行结束后都会被虚拟机销毁,如果线程数量多的话,频繁的创建和销毁线程会大大浪费时间和效率,更重要的是浪费内存。那么有没有一种方法能让线程运行完后不立即销毁,而是让线程重复使用,继续执行其他的任务哪? 这就是线程池的由来,很好的解决线程的重复利用,避免重复开销。 线程池的优点 1、线程是稀缺资源,使用线...原创 2020-05-20 08:14:02 · 162 阅读 · 0 评论 -
最全Java锁详解:独享锁/共享锁+公平锁/非公平锁+乐观锁/悲观锁
在Java并发场景中,会涉及到各种各样的锁,比如:高并发编程系列:4种常用Java线程锁的特点,性能比较、使用场景,这些锁有对应的种类:公平锁,乐观锁,悲观锁等等,这篇文章来详细介绍各种锁的分类: 公平锁/非公平锁 可重入锁 独享锁/共享锁 乐观锁/悲观锁 分段锁 自旋锁 乐观锁 VS 悲观锁 乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度,在Java和数据库中都有此概念对应的实际应用。 1.乐观锁 .原创 2020-05-19 09:03:48 · 284 阅读 · 0 评论 -
Java多线程与并发系列从0到1全部合集,强烈建议收藏!
在过去的时间中,我写过Java多线程与并发的整个系列。 为了方便大家的阅读,也为了让知识更系统化,这里我单独把Java多线程与并发的整个系列一并罗列于此,希望对有用的人有用,也希望能帮助到更多的人。 以下为整个目录,希望大家喜欢! Java多线程系列(一):最全面的Java多线程学习概述 这一篇文章呢,我认为比较重要,学习任何一个东西,首先你得学会建立完整的技能框架,建立好了框架才开始学习,这样事半功倍。 ...原创 2020-05-19 08:58:12 · 237 阅读 · 0 评论 -
Java多线程系列(十):源码剖析AQS的实现原理
在并发编程领域,AQS号称是并发同步组件的基石,很多并发同步组件都是基于AQS实现,所以想掌握好高并发编程,你需要掌握好AQS。 本篇主要通过对AQS的实现原理、数据模型、资源共享方式、获取锁的过程,让你对AQS的整体设计有清晰了解,让你迈出高并发编程的第一步。 AQS AQS(AbstractQueuedSynchronizer)就是一个抽象的队列同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它。 AQS的主要作用是为Java中的并发同步组件提供统一.原创 2020-05-19 08:52:38 · 237 阅读 · 0 评论 -
史上最全Java多线程面试60题,含答案大赠送!
【BAT必考系列!多线程60题】 多线程有什么用? 线程和进程的区别是什么? ava实现线程有哪几种方式? 启动线程方法start()和run()有什么区别? 怎么终止一个线程?如何优雅地终止线程? 一个线程的生命周期有哪几种状态?它们之间如何流转的? 线程中的wait()和sleep()方法有什么区别? 多线程同步有哪几种方法? 什么是死锁?如何避免死锁? 多线程之间如何进行通信? 线程怎样拿到返回结果? ...原创 2020-05-19 08:47:02 · 262 阅读 · 0 评论 -
最全多线程经典面试题和答案
Java实现线程有哪几种方式? 1、继承Thread类实现多线程2、实现Runnable接口方式实现多线程3、使用ExecutorService、Callable、Future实现有返回结果的多线程 多线程同步有哪几种方法? Synchronized关键字,Lock锁实现,分布式锁等。 Runnable和Thread用哪个好? Java不支持类的多重继承,但允许你实现多个接口。所以如果你要继承其他类,也为了减少类之间的耦合性,Run...原创 2020-05-19 08:41:26 · 626 阅读 · 0 评论