[英]UUID.randomUUID within ThreadLocal
我正在查看以下方法,我想知道将UUID.randomUUID()
放在ThreadLocal
中是否有意义或不会引入无意的开销:
class UUIDUtil {
// TODO: why putting randomUUID into ThreadLocal? Will this avoid contentions?
public static final ThreadLocal<UUID> generator =
ThreadLocal.withInitial(UUID::randomUUID);
}
我应该在ThreadLocal
保留randomUUID
吗? 如果是这样,为什么?
如果多个线程要同时生成 UUID,将 UUID 放入 ThreadLocal 是否可以避免争用?
当您查看 ThreadLocal 的 JavaDoc 时,您会发现一些示例代码可用于为每个线程提供唯一编号(原始线程 ID 将被重用!!)。
使用此处的代码,您将以 UUID 的形式为每个线程提供一个唯一的 ID。 这必须存储在 ThreadLocal 实例中......
如果这有意义则另当别论,但它可用于记录目的,因为它允许您像仅使用线程 id 一样更清楚地区分线程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.