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

文章來源:
http://www.cnblogs.com/jobs/archive/2006/11/12/558626.html