最近一直在看并发编程网,这篇文章先记录下这个地方的理解。
上下文环境移步CopyOnWriteArrayList类set方法疑惑?
[java] view
plaincopyprint?
/** The array, accessed only via getArray/setArray. */
private volatile tr...
分类:
其他好文 时间:
2014-05-22 07:11:36
阅读次数:
268
生产者消费者并发编程:假设仓库有10个仓位,分别有10个生产者和10个消费者,生产者不断生产产品,放入仓库的仓位中,而消费者则不断从仓库中获取产品,如果仓库已满,则生产者要等待,等消费者消费后,空出仓位后,再继续放入产品。反之如果仓库已空,则消费者要等待,等待生产者生产出产品后,再继续消费产品。关于...
分类:
编程语言 时间:
2014-05-19 14:39:58
阅读次数:
430
当客户端请求速度远远大于服务端的处理速度,这时候就非常适合使用GuardedSuspention模式packagecn.fcl.guardendSuspension;
importjava.util.ArrayList;
importjava.util.List;
publicclassRequestQueue{
privateList<Integer>integers=newArrayList<Integer>();
..
分类:
编程语言 时间:
2014-05-15 09:08:21
阅读次数:
283
ReentrantLock是一个可重入的互斥锁,实现了接口Lock,和synchronized相比,它们提供了相同的功能,但ReentrantLock使用更灵活,功能更强大,也更复杂。这篇文章将为你介绍ReentrantLock,以及它的实现机制。
ReentrantLock介绍
通常,ReentrantLock按下面的方式使用:
public class ReentrantLockTest...
分类:
其他好文 时间:
2014-05-14 20:02:26
阅读次数:
397
1关于greenletgreelet指的是使用一个任务调度器和一些生成器或者协程实现协作式用户空间多线程的一种伪并发机制,即所谓的微线程。greelet机制的主要思想是:生成器函数或者协程函数中的yield语句挂起函数的执行,直到稍后使用next()或send()操作进行恢复为止。可以使用一个调..
分类:
其他好文 时间:
2014-05-14 19:09:00
阅读次数:
427
Master-Worker模式适合在一个任务可以拆分成多个小任务来进行的情况下使用。packagecn.fcl.masterworker;
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Queue;
importjava.util.concurrent.ConcurrentHashMap;
importjava.util.concurrent.ConcurrentLinked..
分类:
编程语言 时间:
2014-05-14 18:26:04
阅读次数:
243
1、当你想并发去执行一段代码,但是还想获取这段代码的返回结果,那么future多线程模式就可以派上用场了,代码实现如下。publicclassClient{
publicDatarequest(){
finalFutureDatafutureData=newFutureData();
newThread(newRunnable(){
@Override
publicvoidrun(){
futureDat..
分类:
编程语言 时间:
2014-05-13 01:29:02
阅读次数:
405
在并发编程时,一般使用runnable,然后扔给线程池完事,这种情况下不需要线程的结果。所以run的返回值是void类型。如果是一个多线程协作程序,比如菲波拉切数列,1,1,2,3,5,8...使用多线程来计算。但后者需要前者的结果,就需要用callable接口了。callable用法和runnab...
分类:
其他好文 时间:
2014-05-12 20:54:47
阅读次数:
491
你是否觉得锁是一种很神奇的东西,在并发编程中,你只需要将你的代码加上锁,就能保证代码是线程安全的(当然现实和感觉有很大差别,代码的线程安全是非常复杂的),那么,这些都是怎么做到的呢?当存在大量线程同时竞争锁时,竞争失败的锁会怎么做呢?锁又是怎么保证这一切高效的执行的呢?这篇文章将为你回答这些问题,首先我将介绍怎样实现一个正确的锁,然后介绍高效的锁应该具备的条件,最后将介绍两种常用的队列锁算法:CL...
分类:
其他好文 时间:
2014-05-12 06:49:30
阅读次数:
394
在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。为什么要使用生产者和消费者模式在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速度很慢,那么生...
分类:
其他好文 时间:
2014-05-09 08:19:05
阅读次数:
455