多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
**1. ThreadLocal** 线程局部变量可以避免线程之间共享变量,为各个线程提供各自的实例,而且开销不大。可以通过ThreadLocal辅助类来实现。拿非线程安全的SimpleDataFormat类来举例。 ``` // 为每个线程构造一个实例 public static final ThreadLocal<SimpleDateFormat> dateFormat = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd")); // 访问SimpleDateFormat的方法,先调用ThreadLocal类的get方法,再调用SimpleDateFormat类的format方法。 String dateStramp = dateFormat.get().format(new Date()); ``` 首次调用`get`方法,`get`方法会自动调用`initialize`方法提供一个初始值。在此之后,就会返回当前线程的实例。 <br/> **2. ThreadLocalRandom** java.util.Random 用于生成随机数,并且是线程安全的。但是当太多的线程访问同一个随机数生成器时会使性能大大下降,这时可以使用随机数辅助类 ThreadLocalRandom 来代替。 ``` int random = ThreadLocalRandom.current().nextInt(upperBound); ```