"Fundamentally, concurrency bugs come from shared mutable state. All three words need to be active: There needs to be state, ie some data structure; The data structure needs to mutate, ie it gets updated (as well as accessed); The data structure needs to be shared by more than one thread"