Java并发
文章平均质量分 91
hanchao5272
路漫漫其修远兮,吾将上下而求索。https://hanchao.blog.csdn.net/
展开
-
一句话描述volatile关键字如何保证可见性
被volatile关键字修饰的变量,在每个写操作之后,都会加入一条store内存屏障命令,此命令强制工作内存将此变量的最新值保存至主内存;在每个读操作之前,都会加入一条load内存屏障命令,此命令强制工作内存从主内存中加载此变量的最新值至工作内存。...原创 2019-09-15 16:40:44 · 1819 阅读 · 2 评论 -
Java并发52:并发集合系列-基于独占锁+二叉树最小堆实现的单向阻塞无界优先级队列PriorityBlockingQueue
[超级链接:Java并发学习系列-绪论] [系列序章:Java并发43:并发集合系列-序章]原文地址:http://www.importnew.com/25541.html一、 前言PriorityBlockingQueue是带优先级的无界阻塞队列,每次出队都返回优先级最高的元素,是二叉树最小堆的实现,研究过数组方式存放最小堆节点的都知道,直接遍历队列元素是无序的。二...转载 2018-04-15 14:36:23 · 675 阅读 · 0 评论 -
Java并发51:并发集合系列-基于独占锁+数组实现的单向阻塞有界队列ArrayBlockingQueue
[超级链接:Java并发学习系列-绪论] [系列序章:Java并发43:并发集合系列-序章]原文地址:http://www.importnew.com/25566.html一、 前言上节介绍了无界链表方式的阻塞队列LinkedBlockingQueue,本节来研究下有界使用数组方式实现的阻塞队列ArrayBlockingQueue二、 ArrayBlockingQue...转载 2018-04-15 14:21:54 · 618 阅读 · 0 评论 -
Java并发50:并发集合系列-基于独占锁实现的双向阻塞队列LinkedBlockingDeque
[超级链接:Java并发学习系列-绪论] [系列序章:Java并发43:并发集合系列-序章]原文地址:http://ifeve.com/concurrent-collections-3/关于与LinkedBlockingDeque类似的单向队列LinkedBlockingQueue可以参考:Java并发49使用阻塞线程安全的列表列表(list)是最基本的集合。一个列表中的...转载 2018-04-15 13:58:53 · 620 阅读 · 0 评论 -
Java并发49:并发集合系列-基于独占锁+链表实现的单向阻塞无界队列LinkedBlockingQueue
[超级链接:Java并发学习系列-绪论] [系列序章:Java并发43:并发集合系列-序章]原文地址:http://www.importnew.com/25583.html一、前言前面介绍了使用CAS实现的非阻塞队列ConcurrentLinkedQueue,下面就来介绍下使用独占锁实现的阻塞队列LinkedBlockingQueue的实现。二、 LinkedBloc...转载 2018-04-15 13:42:08 · 706 阅读 · 0 评论 -
Java并发48:并发集合系列-基于CAS算法的非阻塞双向无界队列ConcurrentLinkedDueue
[超级链接:Java并发学习系列-绪论] [系列序章:Java并发43:并发集合系列-序章]原文地址:https://www.jianshu.com/p/602b3240afafConcurrentLinkedDeque 是双向链表结构的无界并发队列,从JDK 7开始加入到J.U.C的行列中,使用CAS实现并发安全。与 ConcurrentLinkedQueue 的区别是该阻塞队...转载 2018-04-15 11:32:09 · 1644 阅读 · 0 评论 -
Java并发47:并发集合系列-基于CAS算法的非阻塞单向无界队列ConcurrentLinkedQueue
[超级链接:Java并发学习系列-绪论] [系列序章:Java并发43:并发集合系列-序章]原文地址:https://www.jianshu.com/p/9e73b9216322一、 前言常用的并发队列有阻塞队列和非阻塞队列。前者使用锁实现,后者则使用CAS非阻塞算法实现,使用非阻塞队列一般性能比较好。下面就看看常用的非阻塞ConcurrentLinkedQueue是...转载 2018-04-15 10:50:44 · 1103 阅读 · 0 评论 -
Java并发32:CyclicBarrier的基本方法和应用场景实例
[超级链接:Java并发学习系列-绪论]本章主要对CyclicBarrier进行学习。1.CyclicBarrier简介CyclicBarrier,是JDK1.5的java.util.concurrent并发包中提供的一个并发工具类。所谓Cyclic即 循环 的意思,所谓Barrier即 屏障 的意思。所以综合起来,CyclicBarrier指的就是 循环屏障,虽然这个...原创 2018-04-01 17:17:03 · 14427 阅读 · 1 评论 -
Java并发33:Semaphore基本方法与应用场景实例
[超级链接:Java并发学习系列-绪论]本章主要对Semaphore进行学习。1.Semaphore简介Semaphore,是JDK1.5的java.util.concurrent并发包中提供的一个并发工具类。所谓Semaphore即 信号量 的意思。这个叫法并不能很好地表示它的作用,更形象的说法应该是许可证管理器。其作用在JDK注释中是这样描述的: A c...原创 2018-04-01 21:18:40 · 24395 阅读 · 20 评论 -
Java并发46:并发集合系列-基于锁分段技术的ConcurrentHashMap
[超级链接:Java并发学习系列-绪论] [系列序章:Java并发43:并发集合系列-序章]原文地址:http://ifeve.com/concurrenthashmap/术语定义 术语 英文 解释 哈希算法 hash algorithm 是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表 hash ...转载 2018-04-08 23:06:07 · 1247 阅读 · 0 评论 -
Java并发45:并发集合系列-基于跳表的ConcurrentSkipListSet和ConcurrentSkipListMap
[超级链接:Java并发学习系列-绪论] [系列序章:Java并发43:并发集合系列-序章]原文地址:http://www.cnblogs.com/skywang12345/p/3498634.html 跳表相关:http://kenby.iteye.com/blog/1187303概要本章对Java.util.concurrent包中的ConcurrentSkipList...转载 2018-04-08 22:17:57 · 2823 阅读 · 0 评论 -
Java并发31:CountDownLatch(下)--两种应用场景
Java并发30:CountDownLatch(上)–基本方法学习[超级链接:Java并发学习系列-绪论]本章主要对CountDownLatch的两种应用场景进行学习。有关CountDownLatch的基本方法详见上一章:《 Java并发30》1.用法概述本人所知的CountDownLatch的用法主要有以下两个方面:开关/哨子(初始count=1):所有调用它的...原创 2018-03-31 23:09:20 · 1966 阅读 · 0 评论 -
Java并发30:CountDownLatch(上)--基本方法学习
[超级链接:Java并发学习系列-绪论]本章主要对CountDownLatch的基本方法进行学习。有关CountDownLatch的应用实例详见下一章:《Java并发:31》1.CountDownLatch简介CountDownLatch,是JDK1.5的java.util.concurrent并发包中提供的一个并发工具类。所谓CountDown即 倒计时 的意思,所谓La...原创 2018-03-31 22:29:51 · 1351 阅读 · 0 评论 -
Java并发29:ThreadLocalRandom学习笔记-随机数的三种使用方法
[超级链接:Java并发学习系列-绪论]本章主要对ThreadLocalRandom进行学习。1.ThreadLocalRandom简介ThreadLocalRandom是Java提供的用于并发产生伪随机数的工具类,出现于JDK1.7版本中。ThreadLocalRandom可以看做Math.random()的并发升级类。ThreadLocalRandom不是直接用ne...原创 2018-03-25 22:32:54 · 3496 阅读 · 0 评论 -
Java并发53:并发集合系列-基于独占锁+PriorityBlockingQueue实现的单向阻塞无界延时队列DelayQueue
[超级链接:Java并发学习系列-绪论] [系列序章:Java并发43:并发集合系列-序章]原文地址:http://cmsblogs.com/?p=2413DelayQueue是一个支持延时获取元素的无界阻塞队列。里面的元素全部都是“可延期”的元素,列头的元素是最先“到期”的元素。如果队列里面没有元素到期,是不能从列头获取元素的,哪怕有元素也不行。也就是说只有在延迟期到时...转载 2018-04-15 15:32:57 · 506 阅读 · 0 评论 -
Java并发54:并发集合系列-基于CAS算法的非阻塞无数据缓冲队列SynchronousQueue
[超级链接:Java并发学习系列-绪论] [系列序章:Java并发43:并发集合系列-序章]原文地址:https://blog.csdn.net/Dax1n/article/details/69813682介绍Java 6的并发编程包中的SynchronousQueue是一个没有数据缓冲的BlockingQueue(队列只能存储一个元素)。生产者线程对其的插入操作put必须等...转载 2018-04-15 16:05:08 · 613 阅读 · 0 评论 -
MySql: 表级锁、行级锁、共享锁、排他锁、乐观锁、悲观锁
1.表级锁与行级锁表级锁:table-level locking,锁住整个表。开销小,加锁快。不会死锁(一次性加载所需的所有表)。锁粒度大,发生锁冲突概率大,并发效率低。适合查询。行级锁:row-level loking,锁住一行记录。开销大,加锁慢。会死锁。锁粒度小,发生所冲突概率小,并发效率高。适合并发写,事务控制。并不是直接丢记录行加锁,而是对行对应的索引加锁...原创 2019-08-06 13:04:53 · 4443 阅读 · 1 评论 -
Java中的多线程你只要看这一篇就够了
原文地址:[Java中的多线程你只要看这一篇就够了]1.引言如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。使用多线程只有一个目的,那就是更好的利用CPU资源,因为所有的多线程代码都可以用单线程实现。这个话其实只说对了一半,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实...转载 2018-03-04 22:25:40 · 1058 阅读 · 0 评论 -
Java并发57:Akka Actors并发框架浅谈及入门示例
[超级链接:Java并发学习系列-绪论]本章对Actors并发框架进行初步的介绍和入门示例的演示,关于其更深层次的内容,以后会系统性的进行学习。1.Actors并发模型简介 Actors并发模型是计算机科学领域中的一个并行计算模型,它把actors当做通用的并行计算原语。 一个actor对接收到的消息做出响应,进行本地决策,可以创建更多的actor,或者发送更多的消息...原创 2018-04-18 23:15:04 · 2894 阅读 · 0 评论 -
Java并发41:Executor系列--Executors(上)-Runnable转Callable、ThreadFactory和不可配置的线程池
[超级链接:Java并发学习系列-绪论]本章主要学习Executors接口。1.Executors接口概述@since 1.5这个类定义了供Executor、ExecutorService、ScheduledExecutorService、ThreadFactory和Callable这些接口和类使用的工厂方法和工具方法。Executors来自java.util.concur...原创 2018-04-07 11:44:06 · 1939 阅读 · 0 评论 -
Java并发40:Executor系列--ThreadPoolExecutor和ScheduledThreadPoolExecutor学习笔记
[超级链接:Java并发学习系列-绪论]本章主要学习ThreadPoolExecutor和ScheduledThreadPoolExecutor接口。这两个类一般用于定义自定义线程池和自定义调度线程池。关于这两个接口 ,并未进行实际编程练习,只是对其源代码注释进行总结。1.ThreadPoolExecutor概述@since 1.51.1.主要参数Threa...原创 2018-04-06 18:08:40 · 1748 阅读 · 0 评论 -
Java并发39:Executor系列--ScheduleExecutorService接口学习笔记
[超级链接:Java并发学习系列-绪论]本章主要学习ScheduleExecutorService接口。1.ScheduleExecutorService接口概述@since 1.5ScheduledExecutorService继承自ExecutorService,它可以在给定延时之后调度任务,也可以以指定的周期调度任务。schedule()方法可以创建含有延时(dela...原创 2018-04-06 16:47:44 · 4456 阅读 · 0 评论 -
Java并发38:Executor系列--ExecutorService接口学习笔记
[超级链接:Java并发学习系列-绪论]本章主要学习ExecutorService接口。1.ExecutorService接口概述@since 1.5ExecutorService接口是一个执行器,它可以终止任务。ExecutorService接口还提供了返回Future接口的方法,这个方法可以用于追踪一个或多个异步任务的执行情况。ExecutorService...原创 2018-04-05 23:11:04 · 1009 阅读 · 0 评论 -
Java并发37:Executor系列--Executor接口学习笔记
[超级链接:Java并发学习系列-绪论]本章主要学习Executor接口。1.Executor接口概述@since 1.5Executor,又称为执行器,它可以执行已经提交的Runnable接口类型的任务。这个接口提供了一种将任务提交从任务运行(包括在线程使用、调度等待)分离出来的方法。Executor接口通常用来显式地创建线程。例如,相较于为每一组任务调用ne...原创 2018-04-05 21:26:39 · 1269 阅读 · 0 评论 -
Java并发36:Callable+Future系列--FutureTask学习笔记
[超级链接:Java并发学习系列-绪论]本章主要学习FutureTask接口。1.FutureTask概述FutureTask类表示一个可以取消的异步计算任务。这个类提供了对Future接口的简单实现,提供了一些方法:开启计算、取消计算、查询计算是否完成和查询计算结果。只有计算完成时,才可以通过get()方法获取计算结果;如果计算没有完成,则get()方法会一致在阻塞。...原创 2018-04-05 19:59:35 · 960 阅读 · 0 评论 -
Java并发56:ForkJoin并发框架的原理、2种ForkJoinTask的用法以及ForkJoinPool的常用方法
[超级链接:Java并发学习系列-绪论]本章主要对ForkJoin并发框架进行学习,主要内容分为三个部分:ForkJoin并发框架的浅谈ForkJoin并发编程的两个实例ForkJoinPool线程池的常用方法说明1.ForkJoin并发框架的浅谈1.1.Fork和JoinForkJoin并发框架:Fork=分解 + Join=合并ForkJoin并发框架是...原创 2018-04-18 00:05:53 · 3721 阅读 · 0 评论 -
Java并发35:Callable+Future系列--Future接口学习笔记
[超级链接:Java并发学习系列-绪论]本章主要学习Future接口。1.Future接口概述Future接口代表着异步计算的结果。Future接口提供了一些方法:查看计算是否完成、等待计算完成和获取计算结果。只有在计算完成时,才能通过get()方法获取计算结果,必要时程序会阻塞直到计算完成。取消计算是通过方法cancel()执行的。此外,还提供了一些其他的方法...原创 2018-04-05 16:01:02 · 847 阅读 · 0 评论 -
Java并发34:Callable+Future系列--Callable接口学习笔记
[超级链接:Java并发学习系列-绪论]本章主要学习Callable接口。1.Callable接口概述Callable接口是一种能够返回计算结果并且可以抛出异常的任务。 Callable接口的实现类需要定义一个无参数的方法:call()。@FunctionalInterfacepublic interface Callable<V> { /** ...原创 2018-04-05 15:24:31 · 1031 阅读 · 0 评论 -
Java并发55:并发集合系列-基于预占模式+链表的单向阻塞无界队列LinkedTransferQueue
[超级链接:Java并发学习系列-绪论] [系列序章:Java并发43:并发集合系列-序章]原文地址:https://blog.csdn.net/YJian2008/article/details/16951811TransferQueueTransferQueue是一个继承了BlockingQueue的接口,并且增加若干新的方法。LinkedTransferQueue是Tr...转载 2018-04-15 16:44:40 · 973 阅读 · 0 评论 -
Java并发28:ThreadLocal学习笔记-简介、基本方法及应用场景
[超级链接:Java并发学习系列-绪论]本章主要对ThreadLocal进行学习。1.初始ThreadLocalThreadLocal又称为线程本地变量、线程局部变量,来源于JDK1.2版本。简单来说,每个线程都单独存放一个ThreadLocal变量的副本,线程之间互不干扰。ThreadLocal主要区别于线程之间的共享变量。线程共享变量:多个线程共同访问这个变量...原创 2018-03-25 22:14:59 · 1155 阅读 · 0 评论 -
Java并发27:Atomic系列-原子类型累加器XxxxAdder和XxxxAccumulator的学习笔记
[超级链接:Java并发学习系列-绪论] [系列概述: Java并发22:Atomic系列-原子类型整体概述与类别划分]本章主要对原子累加器进行学习。1.原子类型累加器原子类型累加器是JDK1.8引进的并发新技术,它可以看做AtomicLong和AtomicDouble的部分加强类型。为什么叫部分呢?是因为原子类型累加器适用于数据统计,并不适用于其他粒度的应用。原子类...原创 2018-03-25 21:07:33 · 3222 阅读 · 0 评论 -
Java并发44:并发集合系列-基于写时复制的CopyOnWriteArrayList和CopyOnWriteArraySet
[超级链接:Java并发学习系列-绪论] [系列序章:Java并发43:并发集合系列-序章]原文地址:http://ifeve.com/java-copy-on-write/Copy-On-Write简称COW,是一种用于程序设计中的优化策略。COW的基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这...转载 2018-04-07 23:10:30 · 1255 阅读 · 0 评论 -
Java并发08:Thread的基本方法(5)-interrupt()、isInterrupted()
[超级链接:Java并发学习系列-绪论]本章主要对Java中Thread类的基本方法进行学习。1.序言Thread类作为线程的基类,提供了一系列方法,主要有:Thread.sleep(long):强制线程睡眠一段时间。Thread.activeCount():获取当前程序中存活的线程数。thread.start():启动一个线程。Thread.currentThread()...原创 2018-03-12 16:04:07 · 1562 阅读 · 1 评论 -
Java并发07:Thread的基本方法(4)-Thread.sleep()、Object.wait()、notify()和notifyAll()
[超级链接:Java并发学习系列-绪论]本章主要对Java中Thread类的基本方法进行学习。1.序言Thread类作为线程的基类,提供了一系列方法,主要有:Thread.sleep(long):强制线程睡眠一段时间。Thread.activeCount():获取当前程序中存活的线程数。thread.start():启动一个线程。Thread.currentThread()...原创 2018-03-12 15:08:54 · 1417 阅读 · 3 评论 -
Java并发06:Thread的基本方法(3)-yield方法的分析与实例说明
[超级链接:Java并发学习系列-绪论]本章主要对Java中Thread类的基本方法进行学习。1.序言Thread类作为线程的基类,提供了一系列方法,主要有:Thread.sleep(long):强制线程睡眠一段时间。Thread.activeCount():获取当前程序中存活的线程数。thread.start():启动一个线程。Thread.currentThread()...原创 2018-03-12 14:11:34 · 1317 阅读 · 8 评论 -
Java并发15:并发三特性-有序性定义、有序性问题与有序性保证技术
[超级链接:Java并发学习系列-绪论]在Java并发编程中,如果要保证代码的安全性,则必须保证代码的原子性、可见性和有序性。在 Java并发12:并发三特性-原子性、可见性和有序性概述及问题示例中,对并发中的三个特性(原子性、可见性和有序性)进行了初步学习。 本章主要就Java中保障有序性的技术进行更加全面的学习。1.整体回顾有序性定义:即程序执行的顺序按照代码的先后顺序执行...原创 2018-03-18 11:11:51 · 2584 阅读 · 0 评论 -
Java并发14:并发三特性-可见性定义、可见性问题与可见性保证技术
[超级链接:Java并发学习系列-绪论]在Java并发编程中,如果要保证代码的安全性,则必须保证代码的原子性、可见性和有序性。在 Java并发12:并发三特性-原子性、可见性和有序性概述及问题示例中,对并发中的三个特性(原子性、可见性和有序性)进行了初步学习。本章主要就Java中保障可见性的技术进行更加全面的学习。1.整体回顾可见性定义:当一个线程修改了共享变量的值,其他线程...原创 2018-03-18 10:51:48 · 3287 阅读 · 0 评论 -
Java并发13:并发三特性-原子性定义、原子性问题与原子性保证技术
[超级链接:Java并发学习系列-绪论]在Java并发编程中,如果要保证代码的安全性,则必须保证代码的原子性、可见性和有序性。在 Java并发12:并发三特性-原子性、可见性和有序性概述及问题示例中,对并发中的三个特性(原子性、可见性和有序性)进行了初步学习。本章主要就Java中保障原子性的技术进行更加全面的学习。1.整体回顾原子性定义:一个或多个操作,要么全部执行且在执行过...原创 2018-03-18 10:35:51 · 2731 阅读 · 0 评论 -
Java并发05:Thread的基本方法(2)-join方法-线程插队
[超级链接:Java并发学习系列-绪论]本章主要对Java中Thread类的基本方法进行学习。1.序言Thread类作为线程的基类,提供了一系列方法,主要有:Thread.sleep(long):强制线程睡眠一段时间。Thread.activeCount():获取当前程序中存活的线程数。thread.start():启动一个线程。Thread.currentThread()...原创 2018-03-12 12:53:08 · 1755 阅读 · 0 评论 -
Java并发04:Thread的基本方法(1)-Name、ThreadGroup、activeCount、isAlive、守护线程等
[超级链接:Java并发学习系列-绪论]本章主要对Java中Thread类的基本方法进行学习。1.序言Thread类作为线程的基类,提供了一系列方法,主要有:Thread.sleep(long):强制线程睡眠一段时间。Thread.activeCount():获取当前程序中存活的线程数。thread.start():启动一个线程。Thread.currentThread()...原创 2018-03-12 12:11:02 · 2219 阅读 · 2 评论