Many classes in the TFS SDK for Java document their thread-safey level. This document describes the different degrees of thread-safety. Consider classes which do not document thread-safety to be thread-compatible.
The thread-safety level advertised for a non-abstract class is the degree of safety users can expect from that class. Abstract classes may document the safety of their implementation, but subclasses may declare a safer or less safe level of safety.
If a class does not specify a required level of thread-safety, assume thread-compatible.
A thread-safety requirement for an interface is different than for a class. The level specified for an interface is the minimum level of thread-safety required for all implementations of that interface. Interfaces will rarely require immutable, conditionally thread-safe, or thread-hostile implementations because of the design constraints they would impose. Interfaces will occasionally require thread-safe or thread-compatible implementations.
If an interface does not specify a required level of thread-safety, assume thread-compatible.
Below are the levels of thread-safety the TFS SDK for Java documentation declares. The safest levels (most concurrency-friendly) are described first, and the least safe (least concurrency-friendly) are last. Find more detailed information about these degrees of safety in the article Java theory and practice: Characterizing thread safety by Brian Goetz.