访问Grails全局变量时是否需要使用互斥锁?

访问Grails全局变量时是否需要使用互斥锁?,grails,groovy,Grails,Groovy,我在想 在grails的全局变量中,访问它们时是否需要添加互斥锁? 范例 XXXService类中的静态变量 Grails应用程序上下文 只有在需要线程安全的情况下,才需要同步这些对象。Grails应用程序上下文中的大多数内容都不需要这样做(比如只获得一个单例服务) 所以你的问题的答案不是很明确。当您觉得有必要确保前一个过程已使用您关心的变量完成时,请执行此操作。只有在需要线程安全的情况下,才需要同步这些对象。Grails应用程序上下文中的大多数内容都不需要这样做(比如只获得一个单例服务) 所

我在想 在grails的全局变量中,访问它们时是否需要添加互斥锁? 范例

  • XXXService类中的静态变量
  • Grails应用程序上下文

只有在需要线程安全的情况下,才需要同步这些对象。Grails应用程序上下文中的大多数内容都不需要这样做(比如只获得一个单例服务)


所以你的问题的答案不是很明确。当您觉得有必要确保前一个过程已使用您关心的变量完成时,请执行此操作。

只有在需要线程安全的情况下,才需要同步这些对象。Grails应用程序上下文中的大多数内容都不需要这样做(比如只获得一个单例服务)

所以你的问题的答案不是很明确。当您觉得有必要确保前一个过程已经使用您关心的变量完成时,请执行此操作

我想知道grails的全局变量——我们需要添加互斥吗 访问时锁定它们

JVM实际上没有全局变量。最接近它们的是公共静态变量,这其实不是一回事

您是否必须添加互斥体取决于您希望对变量执行的操作。一般来说,答案是“否”,但这部分是因为一般来说,您不希望有可变的公共静态变量

我想知道grails的全局变量——我们需要添加互斥吗 访问时锁定它们

JVM实际上没有全局变量。最接近它们的是公共静态变量,这其实不是一回事


您是否必须添加互斥体取决于您希望对变量执行的操作。一般来说,答案是“否”,但这在一定程度上是因为一般来说,您不希望有可变的公共静态变量。

“如果这些对象需要线程安全,您只需要同步它们。Grails应用程序上下文中的大多数内容都不需要同步(例如仅获得单例服务)。”-应用程序上下文中的大多数内容不需要线程安全,这绝对不是事实。它们确实需要是线程安全的,特别是单例服务。您肯定希望单例服务是线程安全的。它们将被多个线程并发访问。它们将被多个线程并发访问,但如果每个线程不需要等待其他线程完成对该类或变量的处理,那么它就不需要是线程安全的。例如,如果变量只是一个计数器,表示方法或操作被触发了多少次,那么所有线程都可以访问同一个变量,这无关紧要。”…但是如果每个线程不需要等到其他线程处理完该类或变量,那么它就不需要是线程安全的。”-这不是真的。线程安全意味着从多个线程并发访问对象是安全的。如果您的单例服务不是线程安全的(例如,它们中有可变状态),这是一个问题。对,但是如果您没有(单例服务中没有可变状态),那么它们就不需要是线程安全的,这就是我要说的。如果它是一个无状态服务,任何线程都可以随时访问它们,而不必担心其他线程是否正在访问相同的东西“是的,但是如果你没有(单例中没有可变状态),那么它们就不需要是线程安全的。”-这不是真的。如果它们没有可变状态,那么它们可能是线程安全的。这并不是说它们不需要是线程安全的。你肯定希望你的单例bean是线程安全的。“如果这些对象需要线程安全,你只需要同步它们。Grails应用程序上下文中的大多数内容都不需要线程安全(例如只获得单例服务)。”-应用程序上下文中的大多数内容都不需要线程安全,这绝对不是真的。它们确实需要是线程安全的,特别是单例服务。您肯定希望单例服务是线程安全的。它们将被多个线程并发访问。它们将被多个线程并发访问,但如果每个线程不需要等待其他线程完成对该类或变量的处理,那么它就不需要是线程安全的。例如,如果变量只是一个计数器,表示方法或操作被触发了多少次,那么所有线程都可以访问同一个变量,这无关紧要。”…但是如果每个线程不需要等到其他线程处理完该类或变量,那么它就不需要是线程安全的。”-这不是真的。线程安全意味着从多个线程并发访问对象是安全的。如果您的单例服务不是线程安全的(例如,它们中有可变状态),这是一个问题。对,但是如果您没有(单例服务中没有可变状态),那么它们就不需要是线程安全的,这就是我要说的。如果它是一个无状态服务,任何线程都可以随时访问它们,而不必担心其他线程是否正在访问相同的东西“是的,但是如果你没有(单例中没有可变状态),那么它们就不需要是线程安全的。”-这不是真的。如果它们没有可变状态,那么它们可能是线程安全的。这并不是说它们不需要是线程安全的。您肯定希望您的单例bean是线程安全的。