Interrupting snapshots and the Java TM size method

Yehuda Afek, Nir Shavit, Moran Tzafrir

Research output: Contribution to journalArticlepeer-review


The JavaTM developers kit requires a size() operation for all objects, tracking the number of elements in the object. Unfortunately, the best known solution, available in the Java concurrency package, has a blocking concurrent implementation that does not scale. This paper presents a highly scalable wait-free implementation of a concurrent size() operation based on a new lock-free interrupting snapshots algorithm. The key idea behind the new algorithm is to allow snapshot scan methods to interrupt each other until they agree on a shared linearization point with respect to update methods. This contrasts sharply with past approaches to the classical atomic snapshot problem, that have had threads coordinate the collecting of a shared global view. As we show empirically, the new algorithm scales well, significantly outperforming existing implementations.

Original languageEnglish
Pages (from-to)880-888
Number of pages9
JournalJournal of Parallel and Distributed Computing
Issue number7
StatePublished - Jul 2012


  • Concurrent data-structures
  • Java concurrency
  • Lock-free
  • Multicore algorithms
  • Wait-free


Dive into the research topics of 'Interrupting snapshots and the Java TM size method'. Together they form a unique fingerprint.

Cite this