第4章使用开源
软件Amino构建并发应用
程序 第4章使用开源软件构建并发应用程序................................14.1开源软件Amino介绍...........................................2
4.2无锁(Lock-Free)数据结构...................................34.3应用Amino提供的数据结构.....................................6
4.3.1简单集合...............................................64.3.2树....................................................114.3.3图....................................................13
4.4Amino使用的模式和调度算法..................................144.5Amino的简单使用............................................17
参考资料:........................................................20
在实际的并发线程应用程序中,常常会用到数组、树、图、集合等数据结构,而这些结
构也涉及到并发线程所遇到的安全
问题。采用Amino组件可以很方便地实现线程安全的数
据结构。本章将介绍Amino组件在
Java多线程中的使用。
4.1开源软件Amino介绍
Amino是Apache旗下的开源软件。读者可以访问http://amino-c
bbs.sourceforge.net/得到其
最新版本。面向并发编程,它有以下特点:1)可操作性和良好的伸缩性2)跨平台性3)无论在Java、C++或其他流行语言中,编程风格一致4)适用于多核的各种操作
系统5)可以进行并发编程正确性的测试
本章将介绍Amino的Java版。AminoJava类库将提供优化后的并发线程组件,适用于
JDK6.0及其以后的版本。AminoJava类库将涉及下面四个方面的内容:1)数据结构
该组件将提供一套免锁的集合类。因为这些数据结构采用免锁的运算法则来生成,所以,它们将拥有基本的免锁组件的特性,如可以避免不同类型的死锁,不同类型的线程初始
化顺序等。2)并行模式Amino将为应用程序提供一个或几个大家熟知的并行计算模式。采用这些并行模式可
以使开发者起到事半功倍的效果,这些模式包括Master-Worker、Map-reduce、Divideand
conquer,Pipeline等,线程调度程序可以与这些模式类协同
工作,提供了开发效率。3)并行计算中的一般功能Amino将为应用程序提供并行计算中
常用的方法,例如:a.String、Sequence和Array的处理方面。如Sort、Search、Merge、Rank、Compare、
Reverse、Shuffle、Rotate和Median等b.处理树和图的方法:如组件连接,树生成,最短路径,图的着色等4)原子和STM(软件事务内存模型)
下面的程序可以简单地演示使用Amino的例子://LogServerGood.javapackageorg.amino.logserver;importorg.amino.ds.lockfree.LockFreeQueue;publicclassLogServerGood{/*StandardQueueinterface*/privateQueue
queue;publicLogServerGood()throwsIOException{/*Aminocomponentsarecompatiblewithstandardinterfacewheneverqueue=newLockFreeQueue();
}
possible*/