从这一节开始正式进入并发容器的部分,来看看JDK 6带来了哪些并发容器。在JDK 1.4以下只有Vector和Hashtable是线程安全的集合(也称并发容器,Collections.synchronized*系列也可以看作是线程安全的实现)。从JDK 5开始增加了线程安全的Map接口Concurr...
分类:
编程语言 时间:
2014-12-03 00:10:26
阅读次数:
166
Semaphore 是一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个acquire(),然后再获取该许可。每个release()添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore只对可用许可的号码进行计数,并采取相应...
分类:
编程语言 时间:
2014-12-03 00:11:06
阅读次数:
239
当我们讨论指针时,通常假设它是一种可以用void *指针来表示的东西,在 x86_64 平台下是 8 个字节大小。例如,下面是来自维基百科中关于 x86_64 的文章的摘录:Pushes and pops on the stack are always in 8-byte strides, andp...
分类:
编程语言 时间:
2014-12-03 00:07:50
阅读次数:
156
Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。下面这张图完整描述了线程池的类体系结构。首先Executor的execute方法只是执行一个Runnable的任务,当然了从某...
分类:
编程语言 时间:
2014-12-03 00:09:36
阅读次数:
218
已知的创建多线程的方法有继承Tread类和实现Runnable方法。此外Java还提供了Callable接口,Callable接口也提供了一个call()方法来做为线程执行体。但是call()方法与run()方法有些不同: call()方法可以有返回值 call()方法可以抛出异常 不过Java不允...
分类:
编程语言 时间:
2014-12-03 00:07:58
阅读次数:
145
ConcurrentLinkedQueue是Queue的一个线程安全实现。先来看一段文档说明。一个基于链接节点的无界线程安全队列。此队列按照 FIFO(先进先出)原则对元素进行排序。队列的头部 是队列中时间最长的元素。队列的尾部 是队列中时间最短的元素。新的元素插入到队列的尾部,队列获取操作从队列头...
分类:
编程语言 时间:
2014-12-03 00:08:04
阅读次数:
273
有一段时间没有更新了。接着上节继续吧。Queue除了前面介绍的实现外,还有一种双向的Queue实现Deque。这种队列允许在队列头和尾部进行入队出队操作,因此在功能上比Queue显然要更复杂。下图描述的是Deque的完整体系图。需要说明的是LinkedList也已经加入了Deque的一部分(Link...
分类:
编程语言 时间:
2014-12-03 00:07:50
阅读次数:
216
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------一、关键字1.什么是关键字1>关键字就是C语言提供的有特殊含义的符号,也叫做“保留字”2>C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义autodoubleintstructbre...
分类:
编程语言 时间:
2014-12-03 00:08:19
阅读次数:
209
C++异常是对程序运行过程中发生的异常情况(如被0除)的一种响应。异常提供了将控制权从程序的一个部分传递到另一部分的途径。1、对异常的处理有3个部分组成:(1)引发异常(2)捕获有处理程序的异常(3)使用try块C++异常的简单例子:double hmean(double a,double b){ ...
分类:
编程语言 时间:
2014-12-03 00:07:30
阅读次数:
201
在Set中有一个排序的集合SortedSet,用来保存按照自然顺序排列的对象。Queue中同样引入了一个支持排序的FIFO模型。并发队列与Queue简介中介绍了,PriorityQueue和PriorityBlockingQueue就是支持排序的Queue。显然一个支持阻塞的排序Queue要比一个非...
分类:
编程语言 时间:
2014-12-03 00:07:36
阅读次数:
212
Queue是JDK 5以后引入的新的集合类,它属于Java Collections Framework的成员,在Collection集合中和List/Set是同一级别的接口。通常来讲Queue描述的是一种FIFO的队列,当然不全都是,比如PriorityQueue是按照优先级的顺序(或者说是自然顺序...
分类:
编程语言 时间:
2014-12-03 00:04:45
阅读次数:
245
1 Spring 是什么?
具体描述 Spring:
轻量级:Spring 是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API
依赖注入(DI --- dependency injection、IOC)
面向切面编程(AOP --- aspect orie...
分类:
编程语言 时间:
2014-12-03 00:05:43
阅读次数:
276
Kinect v2,MicrophoneArray可以用来对于水平面音源方向的推测(AudioBeam)和语音识别(Speech Recognition)。这一节是介绍如何取得AudioBeam。 上一节,介绍如何使用通过Kinect SDKv2预览版,从Kinect v2预览版的Color Cam...
分类:
编程语言 时间:
2014-12-03 00:04:56
阅读次数:
552
接上篇,这篇从Lock.lock/unlock开始。特别说明在没有特殊情况下所有程序、API、文档都是基于JDK 6.0的。public void java.util.concurrent.locks.ReentrantLock.lock()获取锁。如果该锁没有被另一个线程保持,则获取该锁并立即返回...
分类:
编程语言 时间:
2014-12-03 00:01:46
阅读次数:
266
死锁与活跃度前面谈了很多并发的特性和工具,但是大部分都是和锁有关的。我们使用锁来保证线程安全,但是这也会引起一些问题。锁顺序死锁(lock-ordering deadlock):多个线程试图通过不同的顺序获得多个相同的资源,则发生的循环锁依赖现象。动态的锁顺序死锁(Dynamic Lock Orde...
分类:
编程语言 时间:
2014-12-03 00:03:03
阅读次数:
296
Python中的if和else,for循环,range序列,break和continue, 函数的定义以及Python的代码风格
分类:
编程语言 时间:
2014-12-03 00:03:14
阅读次数:
362
本小节是《并发容器》的最后一部分,这一个小节描述的是针对List/Set接口的一个线程版本。在《并发队列与Queue简介》中介绍了并发容器的一个概括,主要描述的是Queue的实现。其中特别提到一点LinkedList是List/Queue的实现,但是LinkedList确实非线程安全的。不管Bloc...
分类:
编程语言 时间:
2014-12-03 00:00:31
阅读次数:
413