java - 线程局部变量

标签 java multithreading synchronization thread-safety java-threads

根据我的理解,ThreadLocal是那些其值不会在线程之间共享的变量,而是会被许多线程使用。

例如。如果我有一个变量,其当前值对于每个线程处理结果至关重要。我更愿意使该变量原子或相应的方法同步。

拥有ThreadLocal是否满足上述条件?

我看过很多帖子,都说可以使用 ThreadLocal 作为替代方案,而不是同步。

由于我是初学者,清晰而简单的解释会对我有所帮助。

提前致谢

最佳答案

您问的问题并不完全清楚。

我在这里可以看到两种情况:

  • 变量的值在多个线程中发生变化,并且它应该对所有线程可见 - 在这种情况下,您应该使用同步(ThreadLocal 变量不适用于此)。
  • 变量的值是多个线程的初始值,但每个线程应该有自己的该值的副本并单独更改它 - 这是针对 ThreadLocal .

关于java - 线程局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60883221/

相关文章:

Java FX Platform.runLater(() -> 相当于长时间运行的任务

JAVA - MultiMaps 和entryset()

java - 是否可以在 Scala 中使用 Java 8 风格的方法引用?

java - Spring框架中APPLICATION_STREAM_JSON和APPLICATION_STREAM_JSON_VALUE的区别

.net - WPF无响应的UI问题

c++ - 使用 Visual C++ 开发人员工具运行的代码块

Java,将值传递给实现 Callable 的类的构造函数

c++ - 检查相邻的从属进程是否在 MPI 中结束

synchronization - boost::filesystem::copy 之后需要 fflush 或同步吗?

java - 石头剪刀布 Java 游戏