  We study general techniques for implementing distributed data structures on
top of future many-core architectures with non cache-coherent or partially
cache-coherent memory. With the goal of contributing towards what might become,
in the future, the concurrency utilities package in Java collections for such
architectures, we end up with a comprehensive collection of data structures by
considering different variants of these techniques. To achieve scalability, we
study a generic scheme which makes all our implementations hierarchical. We
consider a collection of known techniques for improving the scalability of
concurrent data structures and we adjust them to work in our setting. We have
performed experiments which illustrate that some of these techniques have
indeed high impact on achieving scalability. Our experiments also reveal the
performance and scalability power of the hierarchical approach. We finally
present experiments to study energy consumption aspects of the proposed
techniques by using an energy model recently proposed for such architectures.
