
Java多线程开发
文章平均质量分 79
wtopps
当你的才华满足不了你的野心时,你应该滚去学习
展开
-
聊聊并发:(三)wait、sleep、notify、notifyAll分析
前言在上一篇中,我们介绍了Java中的线程的基本概念,我们了解到线程是有很多种状态的,本章,我们就来聊聊线程中的状态是如何进行控制与切换的。Java中提供了很多种方法对线程的状态进行控制以及线程之间的通信,包括wait、notify、notifyAll、sleep,下面我们就来看一下它们之间有什么区别,以及如何使用这些方法进行线程状态的控制与通信。线程之间的通信在Java中可以用w...原创 2018-08-05 15:22:21 · 13534 阅读 · 5 评论 -
聊聊并发:(十八)ThreadLocal分析
前言在前面的文章中,我们陆续对concurrent包中的常用类进行了依次介绍,涵盖范围包括各种锁、并发容器、队列,理解这些类的作用以及原理,可以帮助我们更好的应对并发场景下带来的挑战,如果您还对其中哪些类的实现不太熟悉,建议您阅读一下之前的文章。本篇,我们来介绍一下ThreadLocal的作用及其原理,基于JDK1.8。ThreadLocal介绍ThreadLocal是线程内部的数据存储类...原创 2019-03-17 11:55:46 · 355 阅读 · 0 评论 -
聊聊并发:(十七)concurrent包并发容器之Queue、BlockingQueue队列原理分析
LinkedBlockingQueue、ArrayBlockingQueue、SynchronousQueue等阻塞队列原理分析前言在上一篇中,我们了解了ConcurrentHashMap的实现机制,本篇,我们聊了聊在日常开发场景下非常常用的阻塞队列的实现机制。阻塞队列介绍在concurrent包中,提供了多种BlockingQueue的实现,这里我们对比较常用的几个:LinkedBloc...原创 2019-03-15 16:41:56 · 731 阅读 · 0 评论 -
聊聊并发:(十六)concurrent包并发容器之ConcurrentHashMap分析
前言在上一篇文章,我们介绍了concurrent包中的并发集合:CopyOnWriteArrayList,本篇,我们继续了解学习一下另外一个非常常用也是非常重要的一个并发容器:ConcurrentHashMap。ConcurrentHashMap介绍ConcurrnetHashMap是HashMap线程安全版本的实现,阅读本文的朋友,我先假定您对HashMap的使用已经非常的了解了,如果不太...原创 2019-03-10 11:47:33 · 469 阅读 · 0 评论 -
聊聊并发:(十四)concurrent包并发辅助类之Semaphore分析
前言在前几篇文章中,聊聊并发:(十三)concurrent包并发辅助类之CountDownLatch源码分析聊聊并发:(十二)concurrent包并发辅助类之CyclicBarrier源码分析聊聊并发:(七)concurrent包之AbstractQueuedSynchronizer分析我们介绍了concurrent包中的并发控制辅助类——CyclicBarrier与CountDown...原创 2018-12-17 20:54:43 · 444 阅读 · 0 评论 -
聊聊并发:(十三)concurrent包并发辅助类之CountDownLatch源码分析
前言聊聊并发:(十二)concurrent包并发辅助类之CyclicBarrier源码分析上篇文章,我们分析了并发辅助类CyclicBarrier的源码实现,本篇,我们继续聊聊与它功能非常相似的一个类,CountDownLatch类的使用方法以及实现机制。CountDownLatch介绍CountDownLatch是一个同步辅助类,与CyclicBarrier功能相似,它允许一组线程互相等...原创 2018-12-11 11:57:19 · 394 阅读 · 0 评论 -
聊聊并发:(十五)concurrent包并发容器之CopyOnWriteArrayList分析
前言在前面的文章中,我们陆续介绍了concurrent包的各个类,包括几种锁的使用及其实现,并发辅助工具的使用及其实现,本篇开始,我们继续介绍concurrent包中的并发容器的使用及其实现机制。本篇,我们先来看一下并发容器:CopyOnWriteArrayList。CopyOnWriteArrayList介绍CopyOnWriteArrayList是ArrayList的一个线程安全的变体...原创 2018-12-26 18:57:02 · 438 阅读 · 2 评论 -
聊聊并发:(十二)concurrent包并发辅助类之CyclicBarrier源码分析
前言在前几篇文章中,聊聊并发:(九)concurrent包之ReentrantLock分析聊聊并发:(十一)concurrent包之Condition源码分析我们对concurrent包中的locks下的几种锁的源码实现进行了分析,了解了它们的实现原理,在开发高并发的程序中,深入理解锁的使用是非常有必要的,如果没有读过前几篇的朋友,欢迎阅读。本篇,我们继续分析concurrent包中的C...原创 2018-11-24 13:09:05 · 408 阅读 · 0 评论 -
聊聊并发:(十一)concurrent包之Condition源码分析
前言在前几篇文章中,聊聊并发:(九)concurrent包之ReentrantLock分析聊聊并发:(八)concurrent包之AbstractQueuedSynchronizer源码实现分析聊聊并发:(七)concurrent包之AbstractQueuedSynchronizer分析我们介绍了concurrent包中几种锁的实现机制,对其源码进行了分析,在介绍锁的文章中,并没...原创 2018-11-17 14:12:33 · 456 阅读 · 0 评论 -
聊聊并发:(十)concurrent包之ReentrantReadWriteLock分析
前言在前面的文章中,我们陆续介绍了java.util.concurrent.locks包中的一些与锁相关的核心类,之前没有了解过的读者可以通过下面的链接进行查看,聊聊并发:(九)concurrent包之ReentrantLock分析聊聊并发:(八)concurrent包之AbstractQueuedSynchronizer源码实现分析聊聊并发:(七)concurrent包之Abstract...原创 2018-11-13 20:15:38 · 459 阅读 · 0 评论 -
聊聊并发:(九)concurrent包之ReentrantLock分析
前言在上两篇文章中,聊聊并发:(七)concurrent包之AbstractQueuedSynchronizer分析聊聊并发:(八)concurrent包之AbstractQueuedSynchronizer源码实现分析我们介绍了AbstractQueuedSynchronizer同步器的工作原理与源码实现,了解AQS的实现机制对于我们理解Lock的各种锁的实现是至关重要的,本篇,...原创 2018-09-09 14:28:26 · 631 阅读 · 0 评论 -
聊聊并发:(八)concurrent包之AbstractQueuedSynchronizer源码实现分析
前言在上一篇中,聊聊并发:(七)concurrent包之AbstractQueuedSynchronizer分析 我们介绍了concurrent包的大体结构,讲到了Lock接口的实现类是基于AbstractQueuedSynchronizer同步器进行实现的,对AbstractQueuedSynchronizer的功能进行了大体的介绍,本章,我们从源码角度,来看一下AbstractQue...原创 2018-09-05 22:37:09 · 572 阅读 · 1 评论 -
聊聊并发:(七)concurrent包之AbstractQueuedSynchronizer分析
前言在上几章中,我们介绍了Java并发相关的基础知识,了解了并发中常用的关键字synchronized与volatile的使用,以及线程的基本知识,本章开始,我们开始了解一下concurrent包中相关类的使用,util.concurrent包是在JDK1.5以后引入的工具包,该包中提供了多种并发编程场景下使用的工具类,帮助我们构建编写更加强大的多线程程序。一、concurrent包结...原创 2018-08-25 18:49:22 · 685 阅读 · 0 评论 -
聊聊并发:(六)指令重排序与happens-before原则分析
前言在前几章中,我们介绍了线程安全相关的关键字synchronized与volatile的使用,在介绍其原理的过程中,我们提及到了Java中的“happen-before”规则,这个规则对于我们理解Java多线程开发非常的有用,本文我们就来了解一下什么是happen-before规则。什么是happen-before?在上一篇我们介绍volatile实现机制的时候,在指令重排序的部...原创 2018-08-24 11:54:58 · 1749 阅读 · 0 评论 -
聊聊并发:(五)线程安全与同步之volatile分析
前言在上一篇中,我们了解了synchronized关键字的使用,我们知道synchronized是阻塞式同步,在线程竞争激烈的情况下会升级为重量级锁。而在Java中还提供了另外一个关键字volatile,它可以说是Java虚拟机提供的最轻量级的同步机制,本文,我们就来一起了解一下volatile的使用。用法volatile是Java中的一个关键字,在多线程的场景下可能会常常用到,与...原创 2018-08-16 09:45:41 · 618 阅读 · 0 评论 -
聊聊并发:(二)线程基本概念
前言在上一篇文章中,我们介绍了并发编程的好处与必要性,以及并发带来的风险,本篇文章,我们来了解一下Java中线程的基本概念以及基本使用技巧。线程的定义线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为...原创 2018-08-02 21:22:56 · 1024 阅读 · 2 评论 -
聊聊并发:(四)线程安全与同步之synchronized分析
前言在上一篇中,我们介绍了wait、sleep、notify、notifyAll,本篇中,我们将一起来学习一下Java中的关键字synchronized的用法和原理。synchronized介绍synchronized是Java中的关键字,是一种同步锁。在多线程开发中经常会使用到这个关键字,其主要作用是可以保证在同一个时刻,只有一个线程可以执行某个方法或者某个代码块,同时保证一个线...原创 2018-08-10 19:50:30 · 915 阅读 · 0 评论 -
聊聊并发:(一)并发编程概述
前言编写正确的程序很难,而编写正确的并发程序则难上加难。与串行程序相比,在并发程序中存在更多容易出错的地方。那么,为何我们还要使用并发程序?线程是Java语言中不可或缺的重要功能,它们能使复杂的异步代码变得简单,从而极大地简化了复杂系统的开发。此外,想要充分发挥多处理器系统的强大计算能力,最简单的方式就是使用线程。随着处理器数量的持续增长,如何高效地使用蝙蝠正变得越来越重要。同时在当今互联网的...原创 2018-07-28 12:33:13 · 19304 阅读 · 2 评论 -
聊聊并发:(十九)ThreadPoolExecutor线程池原理分析
前言在之前的文章中,我们陆续对concurrent包中的主要的常用类,依次对其原理进行分析,本篇,作为本系列文章的收尾,我们来聊一下并发场景下最为常用的工具——线程池。ThreadPoolExecutor概述当我们需要使用线程的时候,可以直接通过Thread实现,但是频繁的手动去创建线程,会带来很大的资源消耗,因此,我们这时候更应该考虑使用线程池。线程池可以为我们带来的好处:1、降低系统...原创 2019-03-24 13:16:08 · 783 阅读 · 0 评论