4. Protect data shared by threads
Handle race conditions, visibility, synchronized blocks, volatile fields, and atomic classes at the level needed to use pools safely. The goal is to know when shared state is safe, when it is risky, and when to avoid it.