此篇博客所有源码均来自JDK 1.8
在上篇博客【死磕Java并发】—–J.U.C之AQS:AQS简介中提到了AQS内部维护着一个FIFO队列,该队列就是CLH同步队列。CLH同步队列是一个FIFO双...
分类:
编程语言 时间:
2017-03-08 19:36:54
阅读次数:
233
Exchanger 是一个同步辅助类,用于两个并发线程之间在一个同步点进行数据交换。 允许两个线程在某一个点进行数据交换。 可以视作双向的同步队列; 可应用于基因算法、流水线设计等场景 Exchanger提供了 一个同步点 , 在这个同步点,两个线程可以交换数据 。每个线程通过exchange()方 ...
分类:
其他好文 时间:
2016-08-30 10:47:56
阅读次数:
206
SynchronousQueue是这样一种阻塞队列,其中每个 put 必须等待一个 take,反之亦然。同步队列没有任何内部容量,甚至连一个队列的容量都没有。 不能在同步队列上进行 peek,因为仅在试图要取得元素时,该元素才存在; 除非另一个线程试图移除某个元素,否则也不能(使用任何方法)添加元素 ...
分类:
其他好文 时间:
2016-07-21 15:01:07
阅读次数:
150
看了一些关于信号量的线程同步方式,今天用了一下。 我对于线程同步一直有疑问,在主线程和子线程处理时间不相同的时候,用这种信号量,如何保证同步。 假如主线程比较快,信号量连加了n个,但是子线程就不断减这个n,减到0。但是如果主线程太快太快,需要停一停,比如缓冲区快溢出了,主线程需要挂起。 由什么来唤醒 ...
分类:
编程语言 时间:
2016-05-09 22:07:15
阅读次数:
397
在【Java并发编程实战】—–“J.U.C”:CLH队列锁提过,AQS里面的CLH队列是CLH同步锁的一种变形。其主要从两方面进行了改造:节点的结构与节点等待机制。在结构上引入了头结点和尾节点,他们分别指向队列的头和尾,尝试获取锁、入队列、释放锁等实现都与头尾节点相关,并且每个节点都引入前驱节点和后后续节点的引用;在等待机制上由原来的自旋改成阻塞唤醒。其结构如下:知道其结构了,我们再看看他的实现。...
分类:
编程语言 时间:
2015-12-30 09:20:20
阅读次数:
211
5. 数据类型库本库主要描述了不同数据类型的使用,比如日期类型、时间类型、固定类型数组、堆队列、同步队列和集合。Python也提供了很多内置数据类型,比如dict、list、set和frozenset、tuple。以及str类支持Unicode字符串,bytes类保存二进制数据。下面来学习数据类型库提供更多的数据类型。5.1 datetime--基本日期和时间类型本模块datetime提供了对日期...
分类:
其他好文 时间:
2015-11-15 10:56:17
阅读次数:
492
摘自:《深入应用C++11》第九章实际中,主要有两种方法处理大量的并发任务,一种是一个请求由系统产生一个相应的处理请求的线程(一对一)另外一种是系统预先生成一些用于处理请求的进程,当请求的任务来临时,先放入同步队列中,分配一个处理请求的进程去处理任务,线程处理完任务后还可以重用,不会销毁,而是等待下...
分类:
编程语言 时间:
2015-09-02 21:52:26
阅读次数:
254
简介处理大量并发任务时,一个请求对应一个线程来处理任务,线程的创建和销毁将消耗过多的系统资源,并增加上下文切换代价。线程池技术通过在系统中预先创建一定数量的线程(通常和cpu核数相同),当任务到达时,从线程池中分配一个线程进行处理,线程在处理完任务之后不用销毁,等待重用。线程池包括半同步半异步和领导者追随者两种实现方式。线程池包括三部分,第一层是同步服务层,它处理来自上层的任务请求。第二层是同步队列...
分类:
编程语言 时间:
2015-06-16 11:12:52
阅读次数:
434
Zookeeper应用场景:
分布式队列
FIFO(先进先出)
Barrier(同步队列)
共享锁
集群管理
leader选举
命名服务
分布式应用配置项的管理等
FIFO设计思路
1.在/queue-fifo的目录下创建 SEQUENTIAL 类型的子目录 /x(i),这样就能保证所有成员加入队列时都是有编号的。
2.出队列时通过 getChildr...
分类:
其他好文 时间:
2015-05-23 00:03:00
阅读次数:
219
临界资源即那些一次只能被一个线程访问的资源,典型例子就是打印机,它一次只能被一个程序用来执行打印功能,因为不能多个线程同时操作,而访问这部分资源的代码通常称之为临界区。
threading的Lock类,用该类的acquire函数进行加锁,用realease函数进行解锁
import threading
import time
class Num:
def __init__(sel...
分类:
编程语言 时间:
2015-04-28 09:55:13
阅读次数:
169