一般我们考虑的是在线程间共享变量的风险。 有时可能要避免共享变量, 使用 ThreadLocal 辅助类为各个线程提供各自的实例。
ThreadLocal<SimpleDateFormat> dateFormat = ThreadLocal.withInitial(() -> new SimpleDateFormat("yy-MM-dd"));
- 在一个给定线程中首次调用 get 时, 会调用 initialValue 方法。 在此之后, get 方法会返回 属于当前线程的那个实例。
可以使用 ThreadLocal 辅助类为各个线程提供一个单独的生成器, 不过 JDK7 还另外 提供了一个便利类。 只需要做以下调用:
int random = ThreadLocalRandom.currentO.nextlnt(upperBound):
- ThreadLocalRandom.current() 调用会返回特定于当前线程的 Random 类实例。