中文

BlockingQueues 的历史

计算机科学中的逻辑 2012-09-12 v1 软件工程

摘要

本文描述了一种形式化指定并发数据结构行为的方法。在指定并发数据结构时,主要挑战是使规约稳定,即确保它们不能被其他线程失效。为此,我们提出使用基于历史的规约:我们不根据对象的状态来描述方法行为,而是根据对象的状态历史来指定它。历史被定义为状态更新的列表,在所有时刻都可以与实际对象的状态相关联。我们在 java.util.concurrent 库中的 BlockingQueue 层次结构上说明了该方法。我们展示了如何指定 BlockingQueue 接口的行为,将一些决定留给后代类。实现该接口的类正确地继承了规约。作为规约语言,我们使用了 JML 和基于权限的分离逻辑(包括抽象谓词)的组合。这产生了一种抽象、模块化和自然的方式来指定并发队列的行为。这些规约可用于推导关于队列的高级属性,例如证明元素的顺序得到保留。此外,该方法可以很容易地适应其他并发数据结构。

关键词

引用

@article{arxiv.1209.2239,
  title  = {A History of BlockingQueues},
  author = {Marina Zaharieva-Stojanovski and Marieke Huisman and Stefan Blom},
  journal= {arXiv preprint arXiv:1209.2239},
  year   = {2012}
}

备注

In Proceedings FLACOS 2012, arXiv:1209.1699