[英]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.