当客户端请求速度远远大于服务端的处理速度,这时候就非常适合使用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
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
你是否觉得锁是一种很神奇的东西,在并发编程中,你只需要将你的代码加上锁,就能保证代码是线程安全的(当然现实和感觉有很大差别,代码的线程安全是非常复杂的),那么,这些都是怎么做到的呢?当存在大量线程同时竞争锁时,竞争失败的锁会怎么做呢?锁又是怎么保证这一切高效的执行的呢?这篇文章将为你回答这些问题,首先我将介绍怎样实现一个正确的锁,然后介绍高效的锁应该具备的条件,最后将介绍两种常用的队列锁算法:CL...
分类:
其他好文 时间:
2014-05-12 06:49:30
阅读次数:
394
第六章
任务执行大多数并发应用程序是围绕执行任务进行管理的。设计任务时,要为任务设计一个清晰的任务边界,并配合一个明确的任务执行策略。任务最好是独立的,因为这会提高并发度。大多数服务器应用程序都选择了下面这个自然的任务边界:单个客户请求。任务时逻辑上的工作单元,线程是使任务异步执行的机制。应用程序内...
分类:
编程语言 时间:
2014-05-08 18:38:07
阅读次数:
425
1.同步容器,同步容器包括Vector和HashTable,是早期jdk的一部分。另一部分是同步包装类,以Collections.synchronizedxxx的工厂方法创建。
2.同步容器虽然是线程安全的,但是对于复合操作,有时你可能需要加上额外的客户端加锁进行保护,即对于使用这些容器的客户端代码,如果存在复合操作,还是可能存在风险。
3.例如check-and-act操作、循环中的元素操作...
分类:
编程语言 时间:
2014-05-07 08:33:56
阅读次数:
423
定期为大家更新《Java并发变成实践》读书笔记,绝对的干货喔!....
分类:
编程语言 时间:
2014-05-04 18:30:23
阅读次数:
299
定期为大家更新《Java并发变成实践》读书笔记,绝对的干货喔!...
分类:
编程语言 时间:
2014-04-29 13:14:19
阅读次数:
293