gpt4 book ai didi

java - ThreadLocal 与克隆

转载 作者:搜寻专家 更新时间:2023-11-01 01:08:21 24 4
gpt4 key购买 nike

我一直在阅读有关 threadlocal 及其有用场景的信息。我喜欢这个概念,但想知道它与克隆有何不同?

所以一个线程本地将返回一个变量的新副本,这意味着我们不必使用同步。一个很好的例子是 SimpleDateFormat 对象,它不是线程安全的,而 ThreadLocal 提供了一种很好的使用方式。但是,为什么我们不能简单地使用 clone 创建一个新的 varibale 副本?

与克隆相比,ThreadLocal 类提供的增值是什么?

最佳答案

ThreadLocal不能替代同步或线程安全对象访问。如果同一个对象从不同的线程分配给一个ThreadLocal,那么程序不再比以前更线程安全了:同一个对象 仍将在不同线程之间共享。

ThreadLocal 就像一个变量;也就是说,它“命名”或“指代”一个对象:

[ThreadLocal] provides thread-local variables [.. such that] each thread that accesses one (via its get or set method) has its own, independently initialized copy of the variable.

也就是说,ThreadLocal 所做的是在使用相同 ThreadLocal 对象的线程之间提供获取/设置隔离。因此每个线程都可以将自己的 不同 对象分配/检索给 ThreadLocal;但这仍然需要“克隆”或新的实例化来分配不同的对象!

请记住,赋值(或方法调用)永远不会创建对象的隐式克隆/副本/副本 - 这会扩展到 ThreadLocal。

关于java - ThreadLocal 与克隆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14422408/

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