前面的章节主要谈谈原子操作,至于与原子操作一些相关的问题或者说陷阱就放到最后的总结篇来整体说明。从这一章开始花少量的篇幅谈谈锁机制。上一个章节中谈到了锁机制,并且针对于原子操作谈了一些相关的概念和设计思想。接下来的文章中,尽可能的深入研究锁机制,并且理解里面的原理和实际应用场合。尽管synchron...
分类:
编程语言 时间:
2014-12-02 22:25:59
阅读次数:
203
去年年底有一个Guice的研究计划,可惜由于工作“繁忙”加上实际工作中没有用上导致“无疾而终”,最终只是完成了Guice的初步学习教程,深入的研究没有继续进行下去。最近一直用的比较多的就是java.util.concurrent(J.U.C),实际上这块一直也没有完全深入研究,这次准备花点时间研究下...
分类:
编程语言 时间:
2014-12-02 22:25:08
阅读次数:
232
从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包,而Queue,很多情况下使用到了Atomic操作,因此首先从这里开始)。很多情况下我们只是需要一个简单的、高效的、线程安全的递增递减方案。注意,这里有三个条件:简单,意味着程序员尽可能少的操作底层或者实现...
分类:
编程语言 时间:
2014-12-02 22:24:54
阅读次数:
197
formal specification:In computer science, formal specifications are mathematically based techniques whose purpose are to help with the implementation ...
分类:
编程语言 时间:
2014-12-02 22:23:30
阅读次数:
158
在这一部分开始讨论数组原子操作和一些其他的原子操作。AtomicIntegerArray/AtomicLongArray/AtomicReferenceArray的API类似,选择有代表性的AtomicIntegerArray来描述这些问题。int get(int i)获取位置i的当前值。很显然,由...
分类:
编程语言 时间:
2014-12-02 22:20:51
阅读次数:
205
这是一份完整的Java 并发整理笔记,记录了我最近几年学习Java并发的一些心得和体会。J.U.C 整体认识原子操作 part 1 从AtomicInteger开始原子操作 part 2 数组、引用的原子操作原子操作 part 3 指令重排序与happens-before法则原子操作 part 4 ...
分类:
编程语言 时间:
2014-12-02 22:12:28
阅读次数:
254
在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁(后面的章节还会谈到锁)。锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等...
分类:
编程语言 时间:
2014-12-02 22:08:37
阅读次数:
227
在理解J.U.C原理以及锁机制之前,我们来介绍J.U.C框架最核心也是最复杂的一个基础类:java.util.concurrent.locks.AbstractQueuedSynchronizer。AQSAbstractQueuedSynchronizer,简称AQS,是J.U.C最复杂的一个类,导...
分类:
编程语言 时间:
2014-12-02 22:08:30
阅读次数:
255
1VC声明12345678LONGRegQueryValueEx(HKEYhKey,// handle to keyLPCTSTRlpValueName,// value nameLPDWORDlpReserved,// reservedLPDWORDlpType,// type bufferLPB...
分类:
其他好文 时间:
2014-12-02 20:29:53
阅读次数:
171
期中之后的第一个lab 就是实现一个简单的Shell 程序,程序的大部分已经写好,只需要实现 eval 函数和处理信号的sigchld_handle, sigint_handle, sigtstp_handle这三个函数。这个lab 主要要求处理好各个信号,因为上课的时候一直听得很糊涂,就拖着没.....
分类:
移动开发 时间:
2014-12-01 20:46:23
阅读次数:
709