ThreadLocal 的使用场景和最佳实践有哪些?