Amino CBB (Concurrent Building Blocks) 類庫(kù)將提供優(yōu)化后的并發(fā)線程組件,適用于JDK6.0 及其以后的版本。

Amino Java 類庫(kù)將涉及下面四個(gè)方面的內(nèi)容:

1) 數(shù)據(jù)結(jié)構(gòu) 
該組件將提供一套免鎖的集合類。因?yàn)檫@些數(shù)據(jù)結(jié)構(gòu)采用免鎖的運(yùn)算法則來生成,所
以,它們將擁有基本的免鎖組件的特性,如可以避免不同類型的死鎖,不同類型的線程初始
化順序等。 
2) 并行模式 
Amino 將為應(yīng)用程序提供一個(gè)或幾個(gè)大家熟知的并行計(jì)算模式。采用這些并行模式可
以使開發(fā)者起到事半功倍的效果,這些模式包括 Master-Worker、Map-reduce、Divide and 
conquer, Pipeline 等,線程調(diào)度程序可以與這些模式類協(xié)同工作,提供了開發(fā)效率。 
3) 并行計(jì)算中的一般功能 
Amino 將為應(yīng)用程序提供并行計(jì)算中常用的方法,例如: 
a. String、Sequence  和Array  的處理方面。如Sort、Search、Merge、Rank、Compare、
Reverse、 Shuffle、Rotate 和Median 等 
4)原子和STM(軟件事務(wù)內(nèi)存模型) 

--------------------------------
在Amino 類庫(kù)中,主要算法將使用鎖無關(guān)的(Lock-Free)的數(shù)據(jù)結(jié)構(gòu)。 

原語Compare-and-swap(CAS)  是實(shí)現(xiàn)鎖無關(guān)數(shù)據(jù)結(jié)構(gòu)的通用原語。CAS  可以原子
地比較一個(gè)內(nèi)存位置的內(nèi)容及一個(gè)期望值,如果兩者相同,則用一個(gè)指定值取替這個(gè)內(nèi)存位
罝里的內(nèi)容,并且提供結(jié)果指示這個(gè)操作是否成功。

CAS 操作過程是:當(dāng)處理器要更新一個(gè)內(nèi)存位置的值的時(shí)候,它首
先將目前內(nèi)存位置的值與它所知道的修改前的值進(jìn)行對(duì)比(要知道在多處理的時(shí)候,你要更
新的內(nèi)存位置上的值有可能被其他處理更新過,而你全然不知),如果內(nèi)存位置目前的值與
期望的原值相同(說明沒有被其他處理更新過),那么就將新的值寫入內(nèi)存位置;而如果不
同(說明有其他處理在我不知情的情況下改過這的值咯),那么就什么也不做,不寫入新的
值(現(xiàn)在最新的做法是定義內(nèi)存值的版本號(hào),根據(jù)版本號(hào)的改變來判斷內(nèi)存值是否被修改,
一般情況下,比較內(nèi)存值的做法已經(jīng)滿足要求了)。CAS 的價(jià)值所在就在于它是在硬件級(jí)別
實(shí)現(xiàn)的,速度那是相當(dāng)?shù)目臁?br style="padding: 0px; margin: 0px; line-height: 10px;" />

項(xiàng)目主頁(yè):http://www.open-open.com/lib/view/home/1361839469849