多线程
文章平均质量分 76
多线程
wangzhipeng47
这个作者很懒,什么都没留下…
展开
-
java集合超详解
首页 博客 专栏·视频 下载 论坛 问答 代码 直播 能力认证 高校会员中心收藏动态消息创作中心java集合超详解feiyanaffection2018-08-03 21:28:15191903收藏2774分类专栏:Java文章标签:Java集合超详解版权一、集合大纲1.集合和数组的区别:2.Collection集合的方法:3.常用集合的分类:Collection接口的接口 对象的集合(...转载 2021-05-15 02:15:22 · 309 阅读 · 0 评论 -
java 中的锁 -- 偏向锁、轻量级锁、自旋锁、重量级锁
首页 博客 专栏·视频 下载 论坛 问答 代码 直播 能力认证 高校会员中心收藏动态消息创作中心java 中的锁 -- 偏向锁、轻量级锁、自旋锁、重量级锁朱清震2017-04-19 22:31:08112287收藏454分类专栏:java文章标签:java乐观锁悲观锁并发版权之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行过多次,发现结果是一样的...转载 2021-05-15 02:03:38 · 301 阅读 · 0 评论 -
synchronized使用详解
synchronized详解synchronized详解1修饰类方法,锁定的是整个类1.1同一类的不同对象,调用同一个静态同步方法,会等待锁释放SynchronizedStatic静态同步方法import java.util.Calendar;public class SynchronizedStatic { public synchronized static void testThreadA(){ try { Thread.sleep(1000); ...原创 2020-08-07 17:58:26 · 169 阅读 · 0 评论 -
synchronized总结详解
synchronized跟面试官扯了半个小时前言钟馗穿着有些微微泛黄的格子道袍,站在安琪拉对面,开始发难,其中让安琪拉印象非常深刻的是法师的synchronized 钩子。开场面试官: 你先自我介绍一下吧!安琪拉: 我是安琪拉,草丛三婊之一,最强中单(钟馗冷哼)!哦,不对,串场了,我是**,目前在--公司做--系统开发。面试官: 刚才听一面的同事说你们上次聊到了synchronized,你借口说要回去补篮,现在能跟我讲讲了吧?安琪拉: 【上来就丢钩子,都不寒暄几句,问...原创 2020-08-07 17:46:41 · 517 阅读 · 0 评论 -
【死磕Java并发】—–J.U.C之阻塞队列:BlockingQueue总结
【死磕Java并发】—–J.U.C之阻塞队列:BlockingQueue总结经过前面六篇博客的阐述,我想各位应该对阻塞队列BlockingQueue有了较为深入的理解,下面来一个总结,先看整个类图:BlockingQueueBlockingQueue接口实现Queue接口,它支持两个附加操作:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。相对于同一操作他提供了四种机制:抛出异常、返回特殊值、阻塞等待、超时:BlockingQueue常用于生产者和消费者场景。 JDK 8...原创 2020-08-04 08:51:49 · 185 阅读 · 0 评论 -
【死磕Java并发】—–深入分析ThreadLocal
【死磕Java并发】—–深入分析ThreadLocalThreadLoacal是什么?ThreadLocal是啥?以前面试别人时就喜欢问这个,有些伙伴喜欢把它和线程同步机制混为一谈,事实上ThreadLocal与线程同步无关。ThreadLocal虽然提供了一种解决多线程环境下成员变量的问题,但是它并不是解决多线程共享变量的问题。那么ThreadLocal到底是什么呢? API是这样介绍它的:This class provides thread-local variables. These ..原创 2020-08-04 08:50:59 · 104 阅读 · 0 评论 -
【死磕Java并发】—–J.U.C之线程池:线程池的基础架构
【死磕Java并发】—–J.U.C之线程池:线程池的基础架构经历了Java内存模型、JUC基础之AQS、CAS、Lock、并发工具类、并发容器、阻塞队列、atomic类后,我们开始JUC的最后一部分:线程池。在这个部分你将了解到下面几个部分:线程池的基础架构 线程池的原理分析 线程池核心类的源码分析 线程池调优Executor我们先看线程池的基础架构图:ExecutorExecutor,任务的执行者,线程池框架中几乎所有类都直接或者间接实现Executor接口,它是线程池框架的基..原创 2020-08-04 08:50:14 · 114 阅读 · 0 评论 -
【死磕Java并发】—–J.U.C之线程池:ThreadPoolExecutor
【死磕Java并发】—–J.U.C之线程池:ThreadPoolExecutor作为Executor框架中最核心的类,ThreadPoolExecutor代表着鼎鼎大名的线程池,它给了我们足够的理由来弄清楚它。下面我们就通过源码来一步一步弄清楚它。内部状态线程有五种状态:新建,就绪,运行,阻塞,死亡,线程池同样有五种状态:Running, SHUTDOWN, STOP, TIDYING, TERMINATED。 private final AtomicInteger ...原创 2020-08-04 08:46:53 · 145 阅读 · 0 评论 -
【死磕Java并发】—–J.U.C之线程池:ScheduledThreadPoolExecutor
【死磕Java并发】—–J.U.C之线程池:ScheduledThreadPoolExecutorScheduledThreadPoolExecutor解析我们知道Timer与TimerTask虽然可以实现线程的周期和延迟调度,但是Timer与TimerTask存在一些缺陷,所以对于这种定期、周期执行任务的调度策略,我们一般都是推荐ScheduledThreadPoolExecutor来实现。下面就深入分析ScheduledThreadPoolExecutor是如何来实现线程的周期、延迟...原创 2020-08-04 08:46:01 · 203 阅读 · 0 评论 -
【死磕Java并发】—–分析 ArrayBlockingQueue 构造函数加锁问题
【死磕Java并发】—–分析 ArrayBlockingQueue 构造函数加锁问题昨天有位小伙伴问我一个 ArrayBlockingQueue 中的一个构造函数为何需要加锁,其实这个问题我还真没有注意过。主要是在看 ArrayBlockingQueue 源码时,觉得它很简单,不就是通过加锁的方式来操作一个数组 items 么,有什么难的,所以就没有关注这个问题,所以它一问我懵逼了。回家细想了下,所以产生这篇博客。我们先看构造方法: public ArrayBlockingQue...原创 2020-08-04 08:44:05 · 233 阅读 · 0 评论 -
【死磕 Java 并发】—– synchronized 的锁膨胀过程
【死磕 Java 并发】—– synchronized 的锁膨胀过程synchronized 是 Java 面试的常客,我们需要掌握它的基本使用,比如同步代码块、同步普通方法、同步静态方法,以及他们的区别,当然这是最初级的。高级点的就是需要掌握 synchronized 的实现原理,比如对象头、synchronized 的锁优化、锁的膨胀过程,这篇文章就是介绍 synchronized 的锁膨胀过程。该过程其实很多小伙伴都不知道,18年面试的时候问了不下于 20 个人,没有一个回答比较好的,...原创 2020-08-04 08:43:03 · 686 阅读 · 3 评论 -
【死磕Java并发】—–J.U.C之线程池:ScheduledThreadPoolExecutor
【死磕Java并发】—–J.U.C之线程池:ScheduledThreadPoolExecutorScheduledThreadPoolExecutor解析我们知道Timer与TimerTask虽然可以实现线程的周期和延迟调度,但是Timer与TimerTask存在一些缺陷,所以对于这种定期、周期执行任务的调度策略,我们一般都是推荐ScheduledThreadPoolExecutor来实现。下面就深入分析ScheduledThreadPoolExecutor是如何来实现线程的周期...原创 2020-07-06 07:11:04 · 190 阅读 · 0 评论 -
并发编程之AQS源码及原理分析
并发编程之AQS源码及原理分析上次的文章《并发编程的锁和内存模型》介绍了synchronize和各种锁(偏向锁,自旋锁,轻量级锁以及重量级锁),介绍了Java内存模型的三大特性,引入了volitile这个关键字,详细说明了它的作用和原理,另外介绍了JUC里很多地方用到的思想或叫算法:CAS(比较并交换),今天的重点是JUC里的难点AQS(I think),这块不得不看源码了。面试环节面试官:那我记得还有一个和CAS名字很像的叫AQS,你能说下吗?我:可以。1、AQS(Abstrac.原创 2020-07-05 07:53:45 · 161 阅读 · 0 评论 -
java并发包和类总结-JUC总结
java并发包和类总结-JUC总结多线程课程JUC课程实战Java高并发Java并发编程的艺术多线程程序:是一个静态的概念,一般对应于操作系统中的一个可执行文件。一组指令的集合。 进程:是一个动态的概念,执行中的程序叫做进程。1.进程是程序的一次动态执行过程, 占用特定的地址空间。2.每个进程由3部分组成:cpu、data、code。每个进程都是独立的,保有自己的cpu时间,代码和数据,即便用同一份程序产生好几个进程,它们之间还是拥有自己的这3样东西,这样的缺点是:浪费内存,...原创 2020-06-04 03:56:36 · 727 阅读 · 0 评论 -
多线程-volatile详解
一个volatile跟面试官扯了半个小时前言volatile 应该算是Java 后端面试的必考题,因为多线程编程基本绕不开它,很适合作为并发编程的入门题。开场面试官:你先自我介绍一下吧!安琪拉: 我是安琪拉,草丛三婊之一,最强中单(钟馗不服)!哦,不对,串场了,我是**,目前在–公司做–系统开发。面试官: 看你简历上写熟悉并发编程,volatile 用过的吧?安琪拉: 用过的。(还是熟悉的味道)面试官: 那你跟我讲讲什么时候会用到 volatile ?...原创 2020-05-18 13:36:15 · 1546 阅读 · 0 评论 -
多线程-深入理解 AQS
我画了35张图,就是为了让你深入理解 AQS 前言谈到并发,我们不得不说AQS(AbstractQueuedSynchronizer),所谓的AQS即是抽象的队列式的同步器,内部定义了很多锁相关的方法,我们熟知的ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore等都是基于AQS来实现的。我们先看下AQS相关的UML图:1AQS实现原理AQS中 维护了一个volatile int st...原创 2020-05-18 13:23:09 · 259 阅读 · 0 评论 -
面试专题-ThreadLocal 源码
面试官:小伙子,听说你看过 ThreadLocal 源码?(万字图文深度解析)、对于ThreadLocal,大家的第一反应可能是很简单呀,线程的变量副本,每个线程隔离。那这里有几个问题大家可以思考一下: ThreadLocal的key是弱引用,那么在 threadLocal.get()的时候,发生GC之后,key是否为null? ThreadLocal中ThreadLocalMap的数据结构? ThreadLocalMap的Hash算法? ThreadLocalMap原创 2020-05-13 11:08:37 · 393 阅读 · 0 评论 -
多线程--线程池的实现原理
干货 | 线程池的实现原理一.概述线程池,顾名思义就是存放线程的池子,池子里存放了很多可以复用的线程。如果不用类似线程池的容器,每当我们需要执行用户任务的时候都去创建新的线程,任务执行完之后线程就被回收了,这样频繁地创建和销毁线程会浪费大量的系统资源。因此,线程池通过线程复用机制,并对线程进行统一管理,具有以下优点: 降低系统资源消耗。通过复用已存在的线程,降低线程创建和销毁造成的消耗; 提高响应速度。当有任务到达时,无需等待新线程的创建...原创 2020-05-13 10:57:44 · 896 阅读 · 0 评论