Baobin Keeping


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索
close

AbstractQueuedSynchronizer解析(1)

发表于 2016-08-19   |   分类于 并发编程   |  

不以文害辞,不以辞害志;以意逆志,是为得之。——孟子

 最近在看ThreadPoolExecutor类的源码。我发现其中一个重要的子类Woker继承自AbstractQueuedSynchronizer(简称AQS)。AQS帮助Woker类轻松实现一个非重入的排它锁。不看不知道一看吓一跳,竟然有11个类继承自AQS,而且这些类都是并发包下面使用频率很高的类。这足以说明这个类的含金量,值得认真研究一下。

阅读全文 »

GYM4-线程池

发表于 2016-08-12   |   分类于 并发编程   |  

1、线程池

优点:将更多的精力放在业务上,不必操心线程的创建和销毁。节省线程创建销毁的时间。

阅读全文 »

SynchronousQueue源码解析

发表于 2016-08-12   |   分类于 并发编程   |  

SynchronousQueue

  SychronousQueue类的大部分代码都交给Transfer内部类的两个子类ThransferQueue和ThransferStack完成。我只写关于ThransferStack的代码。

阅读全文 »

PriorityBlockingQueue源码解析

发表于 2016-08-04   |   分类于 并发编程   |  
优先阻塞队列,一定会涉及优先队列的实现,而且是平衡优先队列。一起看看Doug Lea大师是怎么做的。
阅读全文 »

ArrayBlockingQueue和LinkedBlockingQueue

发表于 2016-08-03   |   分类于 并发编程   |  

两点疑问没有解决:

1、为什么ArrayBlockingQueue不使用takeLock、putLock的双锁机制?使用这种锁分离的策略明显效率更高。

2、为什么判断是否存在剩余空间,使用while 而不是if?难道作者怕出现意外,但是什么时候会出现意外呢?

阅读全文 »

BlockingQueue接口

发表于 2016-08-03   |   分类于 并发编程   |  

BlockingQueue接口

特性

  支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。

阅读全文 »

GYM3-无锁

发表于 2016-07-29   |   分类于 并发编程   |  

CAS compare and swap

线程切换线程8w个时钟周期。对于竞争不激烈的情况,使用循环使用CAS开销更小。
无锁操作在并发比较少的情况下效率高,但不要迷恋无锁。
CAS是CPU指令级别的原子操作,一条指令完成比较赋值过程,不用担心并发问题。

阅读全文 »

GYM2-Java内存模型和三个概念

发表于 2016-07-29   |   分类于 并发编程   |  

GYM是葛一鸣老师的简写。GYM系列文章都是观看葛老师课程的个人笔记。

阅读全文 »

GYM1-并发基础和Thread类详解

发表于 2016-07-29   |   分类于 并发编程   |  

GYM是葛一鸣老师的简写。GYM系列文章都是观看葛老师课程的个人笔记。

阅读全文 »

数组中只出现一次的数字

发表于 2016-07-28   |  

题目

一个整型数组里除了两个数字之外,其他的数字都出现两次。请写程序找出这两个只出现一次的数字。要求时间复杂度为O(n),空间复杂度为O(1)。
{2,4,3,6,3,2,5,5} 结果为4,6。

阅读全文 »
1234
Baobin

Baobin

37 日志
9 分类
10 标签
© 2018 Baobin
由 Hexo 强力驱动
主题 - NexT.Pisces