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

@prototype作用域如何帮助多线程

濮阳唯
2023-03-14

我得到了一个单线程应用程序,并要求将其设置为多线程。使用了许多单例实例。

我知道,当一个单例实例在多个线程之间共享时,该实例的所有变量都将在多个线程之间共享。

例如,有一个计数变量,它是一个单实例变量。我的想法是每个线程应该增加“计数”,每个线程只增加一次。所以计数器应该是1。如果我增加共享对象的这个变量,所有线程都会得到这个值。因此,当第二个线程执行该操作时,该值将不是1,而是2。对于递增该值的第n个线程,它看到的值将是n,而不是1。

为了防止这种情况,我在该类上使用了一个原型作用域。现在,我将为每个线程获取一个新对象,并且每个线程的计数器将保持为 1。

这就是我认为我会使用原型范围的方式。这有意义吗?我举了一个计数器的例子,在那个共享实例中有很多很多不同类型的这样的变量。我对原型的使用是合理的吗?

共有1个答案

葛嘉悦
2023-03-14

您可以将局部变量用于上述目的,它不必是实例变量。

为了防止这种情况,我在那个类上使用了一个原型作用域。现在,我将为每个线程获取一个新对象,每个线程的计数器将保持为1。

这就是我认为我将使用原型范围的方式。这有意义吗?

这是有道理的,但唯一的问题是,我没有看到实例变量的情况,正如我之前所说,你可以用局部变量轻松做到这一点。小心将原型范围 bean 注入单例范围 bean 中。Spring原型范围豆在一个单例

 类似资料:
  • 要查看在线文件,在MATLAB菜单栏中选择Help选项。(更多关于使用在线文件的信息见帮助浏览器.) 在“用MATLAB”下,文件主要由以下主题构成: 开发环境- 提供关于MATLAB桌面的全部信息。 数学- 描述如何使用MATLAB的数学和统计功能。 编程和数据类型- 描述如何用MATLAB语言创建脚本和函数。 作图- 描述怎样用MATLAB的图形功能绘制数据图。 3D可视化- 介绍怎样用查看,

  • 问题内容: 我不喜欢动态编程语言,但是我写了相当一部分JavaScript代码。我从来没有真正了解过这种基于原型的编程,有人知道它是如何工作的吗? 我记得很久以前与人们进行过多次讨论(我不确定自己在做什么),但是据我了解,这里没有一个课堂的概念。这只是一个对象,这些对象的实例是原始对象的副本,对吧? 但是,此“ .prototype”属性在JavaScript中的确切目的是什么?它与实例化对象有何

  • 本文向大家介绍winforms 使用帮助类显示帮助,包括了winforms 使用帮助类显示帮助的使用技巧和注意事项,需要的朋友参考一下

  • 我正在浏览Spring OAuth2 Client详细信息接口的api文档(源代码)。我不知道这是如何工作的,也不知道clientDetails.getAuthorities()在授权流程中是如何帮助的。API文档描述如下: 而且我理解上面和userDetails接口的< code > user details . getauthorities()不一样。API文档如下所示: 据我所知,在客户详情

  • 纯文本的帮助 Help on built-in module atexit: NAME atexit - allow programmer to define multiple exit functions to be executed upon normal program termination. DESCRIPTION Two public functions, regi

  • 记住命令,特别是命令的用法挺难,不同的命令都有各自的可以使用的参数。一般的命令都支持 --help 参数,它会为你显示命令的帮助信息,比如可用的参数,参数的作用等等。或者也可以使用 man 命令查看命令的帮助手册。 查看帮助,例如看一下 curl 命令的帮助信息: curl --help 返回信息截取: Usage: curl [options...] <url> Options: (H) me