gpt4 book ai didi

java - 这里ThreadLocal的目的是什么?

转载 作者:行者123 更新时间:2023-12-01 19:32:52 26 4
gpt4 key购买 nike

public class VPattern implements Pattern
{
private final TokenKey tokenKey_;
private final String tokenLabel_;
private Integer cachedHashCode_ = null;
private ThreadLocal<Token> token_ = new ThreadLocal<Token>();

...
}

我正在读这段代码,不明白这里ThreadLocal的用法。这是因为 ThreadLocal 用于确保“token_”对象在任何并发情况下都是线程安全的吗?如果是这样的话,为什么TokenKey和Integer没有线程安全保护呢?我知道“String”始终是线程安全的。

最佳答案

每个线程都会获得自己的Token,即使它们共享相同的VPattern 实例。这样做可能是因为 Token 不是线程安全的,并且 VPattern 希望避免同步对 Token 实例的访问。 tokenKey_ 是最终的,因此不必担心字段更改,而且它本身可能是线程安全的。 tokenLabel_ 也是最终的,字符串是不可变的,所以没有问题。 cachedHashCode_ 在这里很奇怪;对它的访问是否受到某种保护?如果没有看到类其他人,很难说发生了什么。

关于java - 这里ThreadLocal的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59040676/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com