java - 多线程调用单例方法会影响局部变量吗?

标签 java memory-management methods

我创建了一个具有多种方法的类,并且该类可以随时只有单个实例,就像单例行为和没有任何实例变量的类一样。

现在我很困惑,如果对单个方法的多次调用是否会给出预期的结果,如果该方法仅具有会受到多个线程影响的参数?
因为一旦分配了内存,该方法就在堆栈中,然后同时线程调用该方法,结果是什么?

最佳答案

每个线程都有自己的、独立的、私有(private)的堆栈。当线程进入方法时,所有参数和局部变量都在该线程的本地堆栈中,其他线程无法访问它。

因此,如果两个线程进入同一个方法,但这个方法只访问它的参数和局部变量(并且两个线程中的参数并不指向同一个对象),那么一个线程的执行是不可能干扰的与对方的线程执行。它几乎就像两个独立的java进程。

关于java - 多线程调用单例方法会影响局部变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15779585/

相关文章:

java - 如何在应用程序中三天显示一次对话框

java - 控制台.readline();不起作用

ios - 调用框架中的方法

Swift 3 - 有什么方法可以强制调用对象的方法吗?

c# - C#错误: not all code paths return a value. Casting a string to a float

java - 查找空格时indexOf()返回-1

c# - 如何从 C# 代码运行 jar 文件

C 无锁队列内存管理

在静态内存上调用 C free() 函数(在非动态分配的内存上)

c - 如何限制我的 C 代码可访问的内存量?