之因此称之为 Fast,由于没有使用 JDK 的使用线性探测法的 Map,若是你使用的是Netty 线程池工厂建立的线程,搭配 Netty 的 ftl,性能很是好,若是你使用自定义的线程,搭配 ftl,性能也会比 JDK 的好,注意: ftl 没有 JDK 的内存泄露的风险。数组
但作到这些不是没有代价的,因为每个 ftl 都是一个惟一的下标,而这个下标是每次建立一个 ftl 对象都是递增 2,当你的下标很大,你的线程中的 Map 相应的也要增大,能够想象,若是建立了海量的 ftl 对象,这个数组的浪费是很是客观的。很明显,这是一种空间换时间的作法。安全
一般,ftl 都是静态对象,因此不会有咱们假设的那么多。若是使用不当,确实会浪费大量内存。性能
但这个风险带来的好处是明显的,在楼主的机器上测试,ftl 的读取性能是 JDK 的 5 倍左右,写入的速度也要快 20% 左右。测试
FastThreadLocal 人如其名,快且安全!线程