想到Exchanger N parties的一种用法

一般来说,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源码抄过来就是了。
原文地址:https://www.cnblogs.com/jobs/p/558626.html