This document discusses non-blocking algorithms for controlling shared resources and avoiding race conditions. It describes Treiber's algorithm for implementing a non-blocking stack using compare-and-set operations. Performance comparisons show concurrent and synchronized data structures handling different thread loads. Non-blocking algorithms can utilize all server resources but choose collections based on task. Java 7 generally outperforms Java 6 for concurrent collections.