首页 / 分类 / 并发
CATEGORY

并发

共 66 篇已发布文章

不可不说的Java“锁”事

前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK8和Netty3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:1

并发2021.08.164354 阅读

从火车站车次公示栏来学Java读写锁

Java多线程并发之读写锁本文主要内容:读写锁的理论;通过生活中例子来理解读写锁;读写锁的代码演示;读写锁总结。通过理论(总结)-例子-代码-然后再次总结,这四个步骤来让大家对读写锁的深刻理解。本篇是《凯哥(凯哥Java:kagejava)并发编程学习》系列之《Lock系列》教程的第七篇:《Java并发包下锁学习第七篇:读写锁》。一:读写锁的理论什么是读写锁?多个线程同时读一个资源类是没有任何问题

并发2020.11.212160 阅读
{ }}并发

【BAT面试题系列】面试官:你了解乐观锁和悲观锁吗?

前言乐观锁和悲观锁问题,是出现频率比较高的面试题。本文将由浅入深,逐步介绍它们的基本概念、实现方式(含实例)、适用场景,以及可能遇到的面试官追问,希望能够帮助你打动面试官。目录一、基本概念二、实现方式(含实例) 1、CAS(CompareAndSwap) 2、版本号机制三、优缺点和适用场景四、面试官追问:乐

并发2020.10.314411 阅读

线程池的基本原理,看完就懂了

本文内容是基于研发部门内部的分享整理,记录下来供学习或回顾。1.为什么要用线程池降低资源消耗。通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配、调优和监控2.ThreadPoolExecutor线程

并发2020.10.314154 阅读

Synchronized实现原理深入解析

Synchronized关键字算是Java的元老级锁了,一开始它撑起了Java的同步任务,其用法简单粗暴容易上手。但是有些与它相关的知识点还是需要我们开发者去深入掌握的。比如,我们都知道通过Synchronized锁来实现互斥功能,可以用在方法或者代码块上,那么不同用法都是怎么实现的,以及都经历了了哪些优化等等问题都需要我们扎实的理解。1.基本用法2.实现原理2.1同步代码块的实现2.2同步方法的

并发2020.10.314691 阅读

一个lock锁就可以分出低中高水平的程序员对问题的处置方式

说到lock锁,我相信在座的各位没有不会用的,而且还知道怎么用不会出错,但让他们聊一聊为什么可以锁住,都说人以群分,大概就有了下面低中高水平的三类人吧。第一类人将lock对象定义成static,这样就能让多个线程看到同一个对象,以此实现线程间互斥和保证同步,如果再深问为什么?就怕遮遮掩掩的说好像每个实例都有一个同步块索引,再展开的话就顶不住了,反正大家都这么写,我也不敢问,我也不会说,如果上代码,

并发2020.07.044777 阅读

高级JAVA知识图及JUC讲解(看懂学半年进大厂无压力)

知识框架梳理核心知识框架图 以前待过一个公司,然后公司领导特别nice,10几年的大厂经验,然后技术也特别扎实全面,我们从他那边学到很多东西,但是他教给我们有价值的干货,还得属于2017年年终review时候的分享的学习方法,我们知道授人予鱼不如授人予渔,无可置疑,get到学习的method比get到属性有价值得多。 其实,他教我们学习jav

并发2020.06.164571 阅读
{ }}并发

Java中线程池的理解

Java中线程池的理解通过前面讲解,我们知道了Java中三种获取多线程的方法了。但是,在实际企业中,经常使用到的是第四种—使用线程池获取线程。在讲解这种获取方式之前,我们先来聊聊线程池是什么?为什么要使用线程池,也就是线程池有哪些特点。通过本文学习之后,你会对线程池有所理解。然后我们再来看看跟着凯哥(凯哥Java:kaigejava)一起学线程池这个系列教程将会有什么收获。一:生活中池化案例我们先

并发2020.05.214634 阅读
{ }}并发

Java多线程带返回值的Callable接口

Java多线程带返回值的Callable接口在面试的时候,有时候是不是会遇到面试会问你,Java中实现多线程的方式有几种?你知道吗?你知道Java中有可以返回值的线程吗?在具体的用法你知道吗?如果两个线程同时来调用同一个计算对象,计算对象的call方法会被调用几次你知道吗?如果这些你知道,那么凯哥(凯哥Java:kaigejava)恭喜你,本文你可以不用看了。如果你不知道这些,那么凯哥同样要恭喜你

并发2020.05.164532 阅读
{ }}并发

Java中常用七个阻塞队列的总结

Java队列总结通过前面文章的学习,我们对Java中常用队列做了介绍。本文,咱们来对队列做个总结吧。首先,我们介绍了现实生活中的实际场景(排队买票等),来告诉我们为什么需要使用队列。队列是一种先进先出(FIFO)的抽象数据结构,在Java中,队列使用了两种数据类型来实现的,分别是:数组和链表这两种数据结构。本文主要内容:回顾Java中常用的七个阻塞队列进行总结及阻塞队列中四组AP并进行总结。本文来

并发2020.05.046784 阅读
{ }}并发

Java阻塞队列四组API介绍

Java阻塞队列四组API介绍通过前面几篇文章的学习,我们已经知道了Java中的队列分为阻塞队列和非阻塞队列以及常用的七个阻塞队列。如下图:本文来源:凯哥Java(kaigejava)讲解Java并发系列之阻塞队列教程。系列文章,欢迎大家从第一篇文章开始看起。在查看以上七个队列的API的时候,我们可以很明显的看到以下四组API:add()/remove()/removeoffer()/poll()

并发2020.05.026362 阅读
{ }}并发

Doug Lea并发编程文章全部译文

DougLea并发编程文章全部译文DougLea并发编程文章全部译文DougLea’sHomePage如果IT的历史,是以人为主体串接起来的话,那么肯定少不了DougLea。这个鼻梁挂着眼镜,留着德王威廉二世的胡子,脸上永远挂着谦逊腼腆笑容,服务于纽约州立大学Oswego分校计算机科学系的老大爷。说他是这个世界上对Java影响力最大的个人,一点也不为过。因为两次Java历史上的大变革,他都间接或直

并发2020.05.013212 阅读
{ }}并发

Java中常用的七个阻塞队列第二篇DelayQueue源码介绍

Java中常用的七个阻塞队列第二篇DelayQueue源码介绍通过前面两篇文章,我们对队列有了了解及已经认识了常用阻塞队列中的三个了。本篇我们继续介绍剩下的几个队列。本文主要内容:通过源码学习Delayqueue及理解Dqueue并用代码简单演示使用场景。本文出自凯哥Java(kaigejava)的《凯哥Java并发系列》之《Java并发编程之队列》系列的第三篇:《Java中常用的七个阻塞队列第二

并发2020.04.222935 阅读
{ }}并发

Java中常用的七个阻塞队列介绍第一篇

Java中常用的七个阻塞队列介绍第一篇 在上一篇我们对Java中的队列分类做了简单的介绍。本文咱们主要来聊聊阻塞队列中的七个常用子类。这七个阻塞队列的学习步骤:先看源码,分析完源码之后,我们再来对每个队列进行总结。最后在来个大总结。文章可能有点长,但是,大家耐着性子看完,保证你对这七大阻塞队列有深刻的理解

并发2020.04.202984 阅读
{ }}并发

Java队列学习第一篇之列介绍

Java队列学习第一篇之列介绍队列大家都知道,但是在Java中队列分哪几种呢?清楚吗?都有哪些地方用到了队列呢?最常用的场景的就是消息中间件,比如各种MQ都是使用的队列来的。如果没有用过消息中间件,那么线程池应该都知道吧。线程池也就是使用队列的。还有redis也是基于队列来实现的。学完本系列教程后,对队列有了了解之后,才能更好的学习线程池相关的。所以本系列大家要好好学。本文主要内容:为什么会有队列

并发2020.04.183355 阅读

Java并发之显式锁和隐式锁的区别

Java并发之显式锁和隐式锁的区别在面试的过程中有可能会问到:在Java并发编程中,锁有两种实现:使用隐式锁和使用显示锁分别是什么?两者的区别是什么?所谓的显式锁和隐式锁的区别也就是说说Synchronized(下文简称:sync)和lock(下文就用ReentrantLock来代之lock)的区别。本文主要内容:将通过七个方面详细介绍sync和lock的区别。通过生活case中的X二代和普通人比

并发2020.04.165096 阅读

Java中的队列都有哪些,有什么区别

Queue:基本上,一个队列就是一个先入先出(FIFO)的数据结构Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Deque接口。 Queue的实现1、没有实现的阻塞接口的LinkedList:实现了java.util.Queue接口和java.util.AbstractQueue接口  内置的不阻塞队列: Priorit

并发2020.04.124911 阅读
{ }}并发

Java多线程并发工具类-信号量Semaphore对象讲解

Java多线程并发工具类-Semaphore对象讲解通过前面的学习,我们已经知道了Java多线程并发场景中使用比较多的两个工具类:做加法的CycliBarrier对象以及做减法的CountDownLatch对象并对这两个对象进行了比较。我们发现这两个对象要么是做加法,要么是做减法的。那么有没有既做加法也做减法的呢?当然有了。Semaphore这个工具类就可以实现Oneoutonein的。本文主要内

并发2020.04.123205 阅读
{ }}并发

Java 中的队列 Queue

一、队列的定义我们都知道队列(Queue)是一种先进先出(FIFO)的数据结构,Java中定义了java.util.Queue接口用来表示队列。Java中的Queue与List、Set属于同一个级别接口,它们都是继承于Collection接口。Java中还定义了一种双端队列java.util.Deque,我们常用的LinkedList就是实现了Deque接口。下面我们看一下类的定义:Queue&a

并发2020.04.112998 阅读
{ }}并发

Java多线程工具类之循环栅栏计数器

Java多线程下循环计数器本文主要内容:CyclicBarrier(下文中凯哥就用cycBar来代替)定义介绍;举例说明;代码演示;从源码来看原理及总结;CyclicBarrier与CountDownLatch(下文就用CountDown来代替)比较。本篇是《凯哥(凯哥Java:kagejava)并发编程学习》系列之《并发工具类》教程的第二篇:《Java多线程下循环计数器》。编辑一:CyclicB

并发2020.04.092403 阅读