静态方法内的变量共享

2024-03-29

我对静态方法内的变量有疑问。 静态方法内的变量是否共享相同的内存位置,或者它们有单独的内存吗?

这是一个例子。

public class XYZ
{
    Public Static int A(int value)
    {
      int b = value;
      return b;
    }
}

如果3个不同的用户调用执行方法A

XYZ.A(10);
XYZ.A(20);
XYZ.A(30);

同时。每次调用的返回值是多少?

XYZ.A(10)=?
XYZ.A(20)=?
XYZ.A(30)=?

它们仍然是局部变量 - 它们不在线程之间共享。事实上它们位于静态方法中并没有什么区别。

如果您使用了static变量作为中间变量,即would不安全:

public class XYZ
{
    // Don't do this! Horribly unsafe!
    private static int b;
    public static int A(int value)
    {
        b = value;
        return b;
    }
}

在这里,所有线程都真正使用相同的b变量,因此如果您同时从多个线程调用该方法,线程 X 可以写入b,然后是线程 Y,因此线程 X 最终返回线程 Y 设置的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

静态方法内的变量共享 的相关文章

  • 用 C 语言制作查找表的最佳方法是什么?

    我正在开发一个嵌入式 C 项目 我有一个 LCD 显示屏 每个字符都有一个 5x7 点阵 要显示特定字符 您必须移动与要打开的点相关的 5 个字节 所以我需要制作某种带有键的查找表 我可以在其中传递 ASCII 字符 并返回一个 5 字节的
  • nUnit Assert.That(method,Throws.Exception) 不捕获异常

    有人可以告诉我为什么这个检查异常的单元测试失败了 显然我真正的测试是检查其他代码 但我使用 Int32 Parse 来显示问题 Test public void MyTest Assert That Int32 Parse abc Thro
  • 初始化影子变量

    标准中是否有任何内容定义从它隐藏的变量初始化变量 例如 int i 7 int i i Visual Studio 2013 允许这样做而不发出警告并按预期工作 内在i变量是 7 然而 Clang 和 GCC 给我一个警告 关于从自身初始化
  • 提升解析器中的 Spirit 段错误

    我一直在尝试将我在本科编译器中编写的一些 lex 和 yacc 代码转换为精神代码以学习精神 我发现了一个我似乎无法弄清楚的段错误 我这样写了词法分析器 namespace lex boost spirit lex enum Tokens
  • lua_resume 的 from 参数的含义

    From Lua 5 2 参考手册 http www lua org manual 5 2 manual html lua resume int lua resume lua State L lua State from int nargs
  • 从 C 调用带有字符串参数的 Go 函数?

    我可以从 C 调用一个没有参数的 Go 函数 按照下面的 https github com joeprivacy crefgo hello world 这通过编译go build和打印 Hello from Golang main func
  • C# - 获取 GPU 的总使用百分比

    我正在向我的程序添加一些新功能 这些功能当前通过串行连接将 CPU 使用情况和 RAM 使用情况发送到 Arduino 请参阅this https create arduino cc projecthub thesahilsaluja cp
  • Windows 消息

    我需要发送带有自定义 ID 的自定义 Windows 消息 其他应用程序将侦听该消息 Windows 是否为内部消息保留任何预定义的消息 ID 范围 如 SQL Server 那样 内部消息最多为 50 000 The 文档 https m
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE
  • 如何使用最小起订量模拟 Controller.User

    我有几个 ActionMethods 查询 Controller User 的角色 如下所示 bool isAdmin User IsInRole admin 在这种情况下可以方便地行事 我开始使用这样的代码对这些方法进行测试 TestMe
  • 使用 ASP.NET Core Identity 将令牌保存在 Cookie 中

    我想在我的 身份 生成的 cookie 中保存一些内容 我目前正在使用文档中的默认身份设置 启动 cs services Configure
  • C 错误:格式“%s”需要“char *”类型的参数,但参数 2 的类型为“char (*)[100]”

    过去几天我正在用 c 进行练习 并且收到此警告 如标题所示 我已经尝试了很多东西 但我真的不知道如何准确地解决这个问题 我不擅长编程 所以会有错误 以下是我正在使用的结构 无法更改 因为它们就是这样给出的 typedef struct bo
  • MVC Razor for 循环

    我有这段代码 嵌套在表单帖子内 但我不断收到错误 它缺少结束语 for int i 0 i lt itemsCount i
  • 将引用托管代码中分配的内存的指针传递给非托管代码

    我在 C 中分配了一个大的 char 缓冲区 并且希望将指向此数据的指针传递给 DLL 中的未管理的 c 函数 现在我认为要使其工作 必须修复字符缓冲区 以便 GC 在函数工作时无法移动它 如果是这样 我会声明缓冲区已固定并调用 UNSAF
  • 如何从 .NET DataGridView 控件单元格值写入文本文件?

    我有以下代码应该循环遍历我的所有行DataGridView 并将其所有单元格值写入文本文件 但是 它输出所有行 但仅输出每行的第一个单元格 而不输出其他三个单元格 string file name C test1 txt var objWr
  • 缓冲区溢出(与)缓冲区溢出(与)堆栈溢出[重复]

    这个问题在这里已经有答案了 可能的重复 堆栈溢出和缓冲区溢出有什么区别 https stackoverflow com questions 1120575 what is the difference between a stack ove
  • 何时使用 const char * 何时使用 const char[]

    我知道它们是不同的 我知道它们有何不同 并且我阅读了我能找到的所有关于char vs char 但所有这些答案都没有告诉我们什么时候应该使用它们 所以我的问题是 你什么时候使用 const char text text 你什么时候使用 co
  • 将对象转换为泛型类型

    我已经有一段时间没有睡觉了 所以这可能比我想象的要容易 我有一个通用类或多或少是这样的 public class Reference
  • 引用计数类和多线程

    我是多线程编程的新手 对此我仍然感到困惑 下面是我的引用计数类 class Rbuffer private char m pnData volatile unsigned int mRefCount public Rbuffer int n
  • C++ 模板类问题中的类型条件

    使用海湾合作委员会4 2 我有这个条件类型的元模板 template

随机推荐

  • jquery iframe跨域动态高度

    仅使用 jquery 且没有庞大的插件 这是否可能 我知道有很多插件和替代品 我正在寻找最短 最强大和最干净的 最好依赖jquery 这里有基本的 jsfiddle 来尝试你的想法 http jsfiddle net 3vPJd http
  • 有没有办法将这个 PHP 放入数组并简化它?

    以下代码加载在指定文件夹 单独定义 中找到的所有 php 文件 有没有办法将其放入数组中以简化代码 只有几个变量发生变化 但本质上代码会重复多次 The General Files the general opendir FRAMEWORK
  • 登录和会话 PHP

    我在检查会话时遇到一些问题 要访问页面 我需要激活会话 登录流程 Connect to mysql server require reservation connect php Function to sanitize values rec
  • 如何就地初始化数组?

    如何在不复制或移动构造临时元素的情况下初始化数组 当元素有明确的deleted 复制或移动构造函数 仅当元素具有默认构造函数或具有所有默认参数的构造函数时 我才能初始化数组 并且执行以下操作之一 a 明确声明数组 b 直接初始化和零初始化数
  • 读取通配符文件名的 Quartz 作业仅获取一个文件

    使用骡子 3 7 如果我的目录中有 5 个扩展名为 csv 的文件 则以下代码仅选取这五个文件之一 如果我删除石英触发器并将其设为普通文件 inbound endpoint 它将拾取所有五个文件 看起来很简单 但并没有按预期工作 Thank
  • 在 Silverlight 中绑定 ComboBox.SelectedItem(更多)

    与我之前的问题相关 在 Silverlight 中绑定 ComboBox SelectedItem https stackoverflow com questions 855519 binding combobox selecteditem
  • 基于流的路由和开放流

    这可能不是典型的 stackoverflow 问题 我的一位同事一直猜测基于流的路由将成为网络领域的下一个重大事件 Openflow http www openflow org提供在大型应用 IT数据中心等中使用低成本交换机的技术 取代Ci
  • 最小化时,窗口应用程序在任务栏上呈橙色闪烁

    我有一个窗口应用程序 当我最小化任务栏上的窗口应用程序以在另一个应用程序上工作时 我们有一种工具可以将消息从一个窗口应用程序发送到另一个窗口应用程序 因此 我的第一个 win 应用程序被最小化 现在我打开另一个 win 应用程序 然后向第一
  • C++11 的序列压缩函数?

    使用新的基于范围的 for 循环 我们可以编写如下代码 for auto x Y IMO 是哪个huge改进自 例如 for std vector
  • Websphere 8.5 Web 服务未部署

    我很难让 Web 服务在 Websphere 上运行 我有一个 ejb jar 它使用 JAXWS 注释 WebService 定义了 Web 服务 然后将该 ejb jar 打包到耳朵中 我已成功将 Ear 部署到 Glassfish 上
  • 是否可以将 javascript 嵌入到 SSRS 报告中?

    SQL Server 报表可以嵌入 vbscript 并在客户端执行 但是使用 javascript 也可以完成同样的操作吗 我认为能够在客户端执行 jQuery 和 CSS 操作来创建更具交互性的深入体验将是非常有用的 在我看来 Repo
  • 选择 Node.js 上 Bookshelf、MySQL、Knex 在两个日期之间创建的对象

    我需要获取两次之间创建的对象的列表 我能够通过编写 SQL 查询来获取数据 但我需要通过 Bookshelf 编写这个查询 我的简单查询 router route locations fetch all locations get func
  • UINavigationController 内的 viewController 是否可以有不同的方向?

    我希望所有视图控制器仅支持纵向模式 除了一个视图控制器 我们将其称为 横向支持 ViewController 它也应该支持横向模式 问题是 当我在横向模式下处于 LandscapeSupportViewController 中 然后推送一个
  • 如何在 wpf c# Visual Studio 中使用标签或文本块的单击事件?

    我正在开发桌面应用程序 我收到建议使用 wpf 而不是 winforms 当我单击标签时 我想转到另一个表单 窗口 但找不到标签和文本块的单击事件 谁能告诉我鼠标左键按下事件的用途是什么 谁能告诉我鼠标左键按下事件的用途是什么 例如 它可以
  • 例如,当编组到 XML 时,我是否可以强制 JAXB 不将“转换为”?

    我有一个使用 JAXB 编组为 XML 的对象 一个元素包含一个包含引号 的字符串 生成的 XML 具有 quot 存在的地方 尽管这通常是首选 但我需要我的输出匹配legacy系统 如何强制 JAXB 不转换 HTML 实体 感谢您的答复
  • 获取 OpenLayers 中绘制要素的坐标

    我正在尝试使用 OpenLayers 3 创建在线地图 我对使用 OpenLayers 是全新的 我想做的就是获取我在地图上绘制的点 线 多边形的坐标 我知道有一个 featuresadded 参数可用 但我无法正确实现它 有人能给我指明如
  • Firebase 推送通知在 NuxtJS 中停止工作

    我再次在推送通知方面遇到一些麻烦 几周前相同的代码也有效 昨天我无意中发现推送通知不再起作用 我正在做的和写的一样文档 https firebase google com docs cloud messaging js receive 我使
  • 如何使用 Python PPTX 设置图表标题的字体大小?

    我添加了一个图表 doughnutchart data add series YTD COMPLETION TO PLAN PerformancePercent NotPerformedPercent 这为我提供了带有文本的图表标题 但如何
  • 在多台笔记本电脑上运行相同的 Rails 代码并将所有笔记本电脑的数据保存到同一个数据库

    我正在尝试在 localhost 3000 上的多台笔记本电脑上运行相同的 Rails 代码 如何将从不同笔记本电脑提交的数据保存在单个数据库中 或者 他们将共享相同的数据库 如果有人提交了数据 数据将自动存储在其他人的笔记本电脑上 还要考
  • 静态方法内的变量共享

    我对静态方法内的变量有疑问 静态方法内的变量是否共享相同的内存位置 或者它们有单独的内存吗 这是一个例子 public class XYZ Public Static int A int value int b value return b