随笔分类 -  多线程

摘要:"全面理解Java内存模型(JMM)及volatile关键字" "正确使用 Volatile 变量" Java内存模型 在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步。通信是指线程之间以何种机制来交换信息。同步是指程序中用于控制不同线程间操作发生相对顺序的机制。 线程间的通信 阅读全文
posted @ 2018-05-02 12:21 做个有梦想的咸鱼 阅读(541) 评论(1) 推荐(0)
摘要:优秀原文 1. "LongAdder | LongAccumulator简介" 2. "源码阅读:全方位讲解LongAdder" 说到LongAdder,不得不提的就是AtomicLong。AtomicLong是JDK1.5开始出现的,里面主要使用了一个long类型的value作为成员变量。它的原理 阅读全文
posted @ 2018-05-02 12:20 做个有梦想的咸鱼 阅读(477) 评论(0) 推荐(1)
摘要:《Java并发编程艺术》读书笔记 Condition介绍 任意一个Java对象,都拥有一组监视器方法(定义在java.lang.Object中),主要包括 、`wait(long timeout) notify() notifyAll() Lock.newCondition`都可以产生一个Condi 阅读全文
posted @ 2018-03-09 00:03 做个有梦想的咸鱼 阅读(861) 评论(0) 推荐(0)
摘要:本文主要介绍一下基于AQS实现的Java并发工具类的作用,然后简单谈一下该工具类的实现原理。其实都是AQS的相关知识,只不过在AQS上包装了一下而已。本文也是基于您在有AQS的相关知识基础上,进行讲解的 CountDownLatch 作用 CountDownLatch是一个同步工具类,它允许一个或多 阅读全文
posted @ 2018-03-07 21:14 做个有梦想的咸鱼 阅读(2287) 评论(0) 推荐(0)
摘要:转载: 《ava并发编程的艺术》第7章 当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2。因为A和B线程在更新变量i的时候拿到的i都是1,这就是线程不安全的更新操作,通常我们会 阅读全文
posted @ 2017-12-09 10:17 做个有梦想的咸鱼 阅读(4595) 评论(0) 推荐(1)
摘要:转自《Java并发编程的艺术》 什么是阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作支持阻塞的插入和移除方法。 1. 支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。 2. 支持阻塞的移除方法:意思是在队列为空时,获取元素 阅读全文
posted @ 2017-12-04 23:59 做个有梦想的咸鱼 阅读(351) 评论(0) 推荐(0)
摘要:带着疑问去分析 1. ReentrantLock是如何实现锁管理的。 2. ReentrantLock是如何实现重入的。 3. ReentrantLock是如何实现公平锁与非公平锁。 4. ReentantLock的公平锁为什么一般情况下性能都比公平锁查。 ReentrantLock数据结构 Ree 阅读全文
posted @ 2017-12-02 22:17 做个有梦想的咸鱼 阅读(309) 评论(0) 推荐(0)
摘要:转载原文地址: "Java并发编程:Lock" synchronized 的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢? 我们知道如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他 阅读全文
posted @ 2017-11-29 09:40 做个有梦想的咸鱼 阅读(314) 评论(0) 推荐(0)
摘要:对ThreadLocal的理解 ThreadLocal主要是用来存储线程内局部变量。每个线程都有自己的局部变量;这种变量在多线程环境下访问时(通过get或set方法访问)时,能保证各个线程里的变量独立于其他线程内变量之外。ThreadLocal实例通常是类中的private static字段,它们希 阅读全文
posted @ 2017-11-22 20:09 做个有梦想的咸鱼 阅读(950) 评论(0) 推荐(0)
摘要:原文地址: http://blog.csdn.net/pistolove/article/details/51232004 Java Future     通过Executors可以创建不同类似的线程池,常见的大概有下表几种类型,还有些可能为被列出。在实际应用 阅读全文
posted @ 2017-11-22 20:08 做个有梦想的咸鱼 阅读(4870) 评论(0) 推荐(0)
摘要:Java接口Lock有三个实现类:ReentrantLock、ReentrantReadWriteLock.ReadLock和ReentrantReadWriteLock.WriteLock。Lock接口提供了比使用synchronized更广泛的锁操作。 ReentrantLock是一个可重入的互 阅读全文
posted @ 2017-11-22 20:08 做个有梦想的咸鱼 阅读(226) 评论(0) 推荐(0)
摘要:http://www.importnew.com/18126.html http://www.importnew.com/20566.html http://www.importnew.com/19745.html 原文地址: "Java并发编程: voldatile关键字解析" volatile这 阅读全文
posted @ 2017-11-22 19:52 做个有梦想的咸鱼 阅读(222) 评论(0) 推荐(0)
摘要:参考原文: "Java并发之AQS详解" 《Java并发编程的艺术》 AQS 概述 AQS简介 AQS(AbstractQueuedSynchronizer)就是一个抽象的队列同步器,它是用来构建锁或者其他同步组件的基础框架,它维护了一个 来表示同步状态,通过内置的FIFO队列来完成线程等待排队。仅 阅读全文
posted @ 2017-11-22 19:48 做个有梦想的咸鱼 阅读(1144) 评论(0) 推荐(0)
摘要:什么是读写锁 平时,我们常见的synchronized和Reentrantlock基本上都是排他锁,这些锁在同一时刻只允许一个线程进行访问,哪怕是读操作。而读写锁是维护了一对锁(一个读锁和一个写锁),通过分离读锁和写锁,使得同一时刻可以允许多个读线程访问,但是在写线程进行访问时,所有的读线程和其他写 阅读全文
posted @ 2017-11-22 19:46 做个有梦想的咸鱼 阅读(618) 评论(0) 推荐(0)
摘要:LockSupport工具类定义了一组的公共静态方法,这些方法提供了最基本的线程阻塞和唤醒功能。Java锁和同步器框架的核心工具类AQS:AbstractQueueSynchronizer,就是通过调用LockSupport.park()和LockSupport.unpark()实现线程的阻塞和唤醒 阅读全文
posted @ 2017-09-03 11:11 做个有梦想的咸鱼 阅读(311) 评论(0) 推荐(0)
摘要:简介 CyclicBarrier的字面意思是可循环使用(Cyclic)的屏障(Barrier)。CyclicBarrier的作用是让一组线程之间相互等待,任何一个线程到达屏障点后就阻塞,直到最后一个线程到达,才都继续往下执行。个人理解:CyclicBarrier可以看成是一道大门或者关卡,先到的线程 阅读全文
posted @ 2017-07-28 10:09 做个有梦想的咸鱼 阅读(906) 评论(0) 推荐(0)
摘要:Cmd Markdown链接 1. "CountDownLatch源码浅析" 参考好文: + "JDK1.8源码分析之CountDownLatch(五)" + "Java并发之CountDownLatch源码分析" + "CountDownLatch源码的理解" + "JDK API" 前言 Cou 阅读全文
posted @ 2017-07-26 20:01 做个有梦想的咸鱼 阅读(378) 评论(0) 推荐(0)
摘要:参考原文 1. "什么时候使用CountDownLatch" CountDownLatch是什么 CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。 单词Latch的中文翻译是门闩,也就是有“门锁”的功能,所以当门没有打开时,N个人是不能进 阅读全文
posted @ 2017-07-14 09:38 做个有梦想的咸鱼 阅读(259) 评论(0) 推荐(0)
摘要:1. "Java并发新构件之Exchanger" 2. "JDK API" Exchaner 介绍 "JDK API 解释" A synchronization point at which threads can pair and swap elements within pairs. Each 阅读全文
posted @ 2017-07-13 09:43 做个有梦想的咸鱼 阅读(218) 评论(0) 推荐(0)
摘要:参考博文 : 1. "线程同步工具(一)" 2. "线程同步工具(二)控制并发访问多个资源" 3. "并发工具类(三)控制并发线程数的Semaphore" 使用Semaphore模拟互斥锁 当一个线程想要访问某个共享资源,首先,它必须获得semaphore。如果semaphore的内部计数器的值大于 阅读全文
posted @ 2017-07-10 12:59 做个有梦想的咸鱼 阅读(715) 评论(0) 推荐(0)