一般來(lái)說(shuō),Exchanger都是一個(gè)Consumer,一個(gè)producer,在適當(dāng)?shù)臅r(shí)候互相交換,這樣可以避免鎖。
我想到Exchanger N parties的一種用法。如下:
最初N個(gè)都是producer,達(dá)到一定條件之后,進(jìn)行交換。根據(jù)交換的結(jié)果重新確定角色,決定自己是consumer還是producer。
這樣做的結(jié)果是,最初所有都是producer,之后一部分轉(zhuǎn)變成consumer。并且由于consumer以及producer的速度不一樣,而能夠自動(dòng)適應(yīng)調(diào)整。
要注意的是,JDK 1.5中的Exchanger只支持2 parties,N parties時(shí),N > 2會(huì)導(dǎo)致死鎖。JDK 1.6中,Exchanger重寫(xiě)了,沒(méi)有這個(gè)問(wèn)題。
在JDK 1.5中要這樣用的話,可以把JDK 1.6中Exchanger源碼抄過(guò)來(lái)就是了。

文章來(lái)源:
http://www.cnblogs.com/jobs/archive/2006/11/12/558626.html