【发布时间】:2017-10-20 18:27:32
【问题描述】:
给了我一个单线程应用程序,并要求将其设为多线程。使用了许多单例实例。
我知道当一个单例实例在多个线程之间共享时,该实例的所有变量都会在多个线程之间共享。
比如有一个count变量,它是一个单例实例变量。我的想法是每个线程都应该增加“计数”。每个线程只增加一次。所以计数器应该是1。如果我增加共享对象的这个变量,所有的线程都会得到那个值。所以当第 2 个线程执行它时,值不会是 1,而是 2。对于增加它的第 n 个线程,它看到的值将是 n,而不是 1。
为了防止这种情况,我在该类上使用了原型范围。现在我将为每个线程获取一个新对象,并且每个线程的计数器将保持为 1。
这就是我认为我会使用原型作用域的方式。这有意义吗?我举了一个计数器的例子,在那个共享实例中有很多很多不同类型的变量。 我使用原型是否合理?
【问题讨论】:
标签: java multithreading spring-boot singleton prototype