一般来说,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源码抄过来就是了。

想到Exchanger N parties的一种用法相关推荐

  1. Java中final关键字的几种用法

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面大家跟随动力节点java ...

  2. Java提高篇 —— Java关键字之final的几种用法

    一.前言 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下 ...

  3. Java提高篇 —— Java关键字之static的四种用法

    一.前言 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一 ...

  4. final关键字_夯实基础:Java中final关键字的几种用法

    导语 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构. 关于static请查 ...

  5. operator的两种用法

    C++ operator两种用法 C++中的operator,有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换).下面分别 ...

  6. 面向对象篇(OOP)--05 Java中static关键字的四种用法

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一下stat ...

  7. Android Intent的几种用法全面总结

    Android Intent的几种用法全面总结 Intent, 用法 Intent应该算是Android中特有的东西.你可以在Intent中指定程序要执行的动作(比如:view,edit,dial), ...

  8. mysql中模糊查询的四种用法介绍

    下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示.  比如 SELECT * FROM [user ...

  9. javamap的用法_Java Map常用的几种用法。

    Java Map常用的几种用法. 通常,Map是由一组键值对组成的数据结构,每个键只能在映射中出现一次.这篇文章总结了有关如何使用Java Map及其实现的类的前9个常见问题解答.为了简单起见,我将在 ...

最新文章

  1. Bzoj 1046: [HAOI2007]上升序列 二分,递推
  2. ocs(office communications server)通讯簿无法同步的问题集锦及解决方法
  3. SQL 2005 Express 的“企业管理器” 下载
  4. 判断两个链表是否相交
  5. Java 调用 C++ (Java 调用 dll)康哥手把手教你
  6. Range在各浏览器下的问题和常见处理办法
  7. Linux Shell常用技巧(九) 系统运行进程
  8. mysql触发器如果某个字段被修改_mysql trigger触发器 一张表一个字段改变 更新另一张表对应字段...
  9. 【机器学习】对于特征离散化,特征交叉,连续特征离散化非常经典的解释
  10. linux 粘贴网站地址,linux 复制粘贴
  11. __attribute__ 详解
  12. KVM虚拟化安装配置(一)
  13. linux vim 终端 行首 行尾_不会vi/vim,看这一篇足矣
  14. 批处理定时执行任务_[Abaqus tips ] 分析任务的定时执行
  15. php \n不能换行
  16. 为游戏而生:第12代英特尔酷睿台式机处理器发布
  17. iOS越狱系统绕过frida检测
  18. Markdown 语法手册 (完整整理版)
  19. 教育期刊《中学数学教学参考》杂志简介及投稿须知
  20. SPOJ GSS2 Can you answer these queries II

热门文章

  1. 15款精美的 WordPress 电子商务网站模板
  2. 论坛用的两个函数:积分计算排名和楼层函数
  3. [导入]Reporting Services 5: Extensions Custom Report Item
  4. CVS配置过程 (部分转)
  5. Mysql如何新建一个服务和移除所新建的服务
  6. URL 地址含汉字无法解析问题
  7. MacOS安装app提示已损坏修复指令
  8. C# DataGridView属性设置
  9. python xampp mysql_php xampp mysql
  10. python的panda是什么库_Python的Pandas库简述