一般来说,Exchanger都是一个Consumer,一个producer,在适当的时候互相交换,这样可以避免锁。

我想到Exchanger N parties的一种用法。如下:

最初N个都是producer,达到一定条件之后,进行交换。根据交换的结果重新确定角色,决定自己是consumer还是producer。

这样做的结果是,最初所有都是producer,之后一部分转变成consumer。并且由于consumer以及producer的速度不一样,而能够自动适应调整。


要注意的是,JDK 1.5中的Exchanger只支持2 parties,N parties时,N > 2会导致死锁。JDK 1.6中,Exchanger重写了,没有这个问题。

在JDK 1.5中要这样用的话,可以把JDK 1.6中Exchanger源码抄过来就是了。

温少 2006-11-12 22:30 发表评论


文章来源:http://www.cnblogs.com/jobs/archive/2006/11/12/558626.html
posted on 2006-11-20 02:08 温少的日志 阅读(168) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: