当前位置: 首页 > 知识库问答 >
问题:

为什么局部变量在Java中是线程安全的

袁子瑜
2023-03-14

谁能告诉我。

共有1个答案

翟越
2023-03-14

当您创建线程时,它将创建自己的堆栈。两个线程将有两个堆栈,并且一个线程从不与其他线程共享其堆栈。

程序中定义的所有局部变量都将在堆栈中分配内存(正如Jatin评论的那样,这里的内存意味着对象的引用值和基元类型的值)(线程调用的每个方法都在自己的堆栈上创建一个堆栈框架)。一旦此线程完成方法执行,堆栈框架将被移除。

youtube上有斯坦福大学教授的精彩演讲,可能有助于你理解这个概念。

 类似资料:
  • 问题内容: 我有一个关于可变范围的问题。 例如: 现在,我创建两个线程,并为每个线程创建一个实例。 当我在每个线程中调用时,可以保证线程安全吗? 本地变量存储在哪里?每个线程的堆栈?堆空间? PS我知道在这种情况下,静态是毫无意义的。我在我们的旧代码中找到了它;我只是想确定我所知道的! 问题答案: 局部变量存储在每个线程自己的堆栈中。这意味着局部变量永远不会在线程之间共享。这也意味着所有本地原始变

  • 问题内容: 我正在寻找类似于ThreadLocal的类,该类将在线程组而不是线程上工作。 如果没有这样的类(在某些开源库中),您将如何实现它?比在WeakHashMap中拥有线程组更好的主意? 我正在使用全局,每个线程和每个线程组上下文中的各种参数在运行时实现可调试的调试框架。作为一个非常简单的示例,您可以有一个报告语句: 并指定只有当服务网络请求的线程组中的某个线程调用该线程时,才会显示具有该特

  • 问题内容: 我以为我了解了Java中局部变量和全局变量之间的区别,直到今天看到一个示例。在这段代码中,我们尝试将元素添加到方法的链接列表中: 我不明白的是,为什么在关闭方法后newElement不会消失?因为这是局部变量,并且未在任何地方的类中定义。这是此类的完整代码: } 先感谢您 问题答案: 这是 变量 和 对象的 混合,确实是局部变量,在方法结束后会丢失,但是引用指向一个 对象 。如果没有引

  • 我在《学习火花:闪电般的大数据分析》一书中看到了这个例子: 我的问题是——评论说:安全:将我们需要的字段提取到局部变量中 为什么提取到局部变量比使用字段(定义为)本身更安全?

  • 问题内容: 如何与线程共享全局变量? 我的Python代码示例是: 我不知道如何让两个线程共享一个变量。 问题答案: 您只需要在中声明为global ,这样就无需修改该函数本地的。 在中,您不需要执行任何特殊操作,只要您不尝试修改的值(这将创建一个局部变量以遮盖全局变量;请在需要时使用)>

  • 问题内容: 请用代码示例说明为什么SimpleDateFormat不是线程安全的。这节课有什么问题? 是SimpleDateFormat的格式功能问题吗?请提供一个在课堂上演示此错误的代码。 FastDateFormat是线程安全的。为什么?SimpleDateFormat和FastDateFormat有什么区别? 请用代码说明这个问题? 问题答案: 将中间结果存储在实例字段中。因此,如果两个线程