Generally speaking, fail-fast means that an outdated object got notification immediately. Thread-safe means multiple threads can access the object or function without any problem. Thread-safe is not necessarily fail-fast.Usually iterators are implemented as fail-fast.