并发
文章平均质量分 79
技乐书香
这个作者很懒,什么都没留下…
展开
-
利用clustersh在集群中执行shell脚本
引言本文将介绍一个叫做clustersh的命令行小工具。如果你想要在许多刚刚装完linux系统的服务器(可能有上百台)上统一执行某个shell脚本,那么clustersh就非常适合你。“刚刚装完linux操作系统”仅仅是为强调clustersh不需要在集群上安装任何东西,并不是clustersh运行的必要条件。如果你的集群中包含很多不同种类的Linux发行版系统,clustersh还...原创 2019-04-08 09:27:25 · 952 阅读 · 0 评论 -
图解java.util.concurrent源码(二)ThreadPoolExecutor
JDK版本我这里依据的JDK版本如下:java version "1.8.0_73"Java(TM) SE Runtime Environment (build 1.8.0_73-b02)Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)如果你的版本和我不同,看到的源码可能有细微的不同。基础...原创 2018-09-08 21:49:23 · 318 阅读 · 0 评论 -
图解java.util.concurrent源码(一)AbstractQueuedSynchronizer(AQS)
引言这个系列文章打算用图解的方式记录了自己阅读concurrent包的中一些类的大概流程,加深印象。什么是AbstractQueuedSynchronizerconcurrent包下的很多类都有一个叫做Sync的内部类(比如ReentrantLock,ThreadPoolExecutor等),并且很多功能会委托给这个内部类,而这个内部类实现了AbstractQueuedSy...原创 2018-09-06 01:24:08 · 793 阅读 · 0 评论 -
图解java.util.concurrent源码(四) 可重入读写锁(ReentrantReadWriteLock)
引言上一篇文章所讲述的ReentrantLock和Semophore分别是AQS在独占模式和共享模式的经典实现。而这次要分享的ReentrantReadWriteLock则是混合了独占共享模式的经典实现。在读这篇文章之前,你最好已经理解了AQS和ReentrantLock,如果你还不理解的话,可以分别见本系列的第一篇文章和第三篇文章读锁和写锁从一个ReentrantReadWriteL...原创 2018-10-07 01:42:58 · 268 阅读 · 0 评论 -
图解java.util.concurrent源码(五) CountDownLatch
引言今天分享一个比较简短一些的源码,那就是concurrent包中我们经常使用的CountDownLatch同步器,"latch"在英文中也是锁的意思,翻译成中文就是“倒数锁”,当你调用了这个类型对象中的await方法后,必须要等待这个锁倒数到0,才能继续运行。这个类的源码非常短,因为其实它就是对AQS共享模式的一个简单实现而已,如果你还不理解AQS的话,可以去看看我这个系列的第一篇文章和第...原创 2018-12-23 21:38:17 · 226 阅读 · 0 评论 -
图解java.util.concurrent源码 (七)ArrayBlockingQueue
引言在并发编程中经常需要进行生产者消费者之间的同步,此时我们最经常使用的同步工具就是有界阻塞队列(BlockingQueue)了,这篇文章和下一篇文章将分别分析最经常使用的两个有界队列,ArrayBlockingQueue和LinkedBlockingQueue的原理,然后对比他们的性能以及使用场景。BlockingQueue接口BlockingQueue接口定义了juc中阻塞队列的标准...原创 2018-12-30 20:48:16 · 255 阅读 · 0 评论 -
图解java.util.concurrent源码 (八)LinkedBlockingQueue
引言上一篇文章中分析了ArrayBlockingQueue的源码,说好这一篇文章中要继续分析LinkedBlockingQueue的源码并且对比他们的使用场景,在看这篇文章之前建议先看一下上一篇文章。LinkedBlockingQueue数据结构LinkedBlockingQueue底层是一个链表结构,入队时直接将节点连接在链表的后面,出队时直接将头结点剔除即可,核心的变量如下:ca...原创 2018-12-31 16:01:05 · 350 阅读 · 0 评论