【问题标题】:Java static methods with class level variables具有类级别变量的 Java 静态方法
【发布时间】:2014-02-18 20:09:40
【问题描述】:

多线程访问时我有静态方法,会不会数据更新不正确,

public class A
{

    private static B b=null;

    public static B create()
    {
        b= new B();
        return b;
    }

    public static B process()
    {
        // doing some processing with b;
        return b;
    }
}

如果多个线程同时访问,B会不会受到影响?

【问题讨论】:

  • 查看 synchronized()、易失性和可能的​​线程安全单例模式。
  • 该代码甚至无法以当前形式编译..

标签: java multithreading static


【解决方案1】:

如果你想保护值并确保它被正确更新,那么你应该使方法同步。

【讨论】:

    【解决方案2】:

    否,因为b 存在于对象级别并且不可静态访问。

    【讨论】:

    • 对不起,B 也只是静态成员。我现在已经更新了代码。
    【解决方案3】:

    在我们看到您访问和使用b 的方式之前,没有人能知道。

    但是,我可以说的一件事是,静态与否通常不是影响线程安全性的主要因素。

    【讨论】:

      猜你喜欢
      • 2012-04-19
      • 1970-01-01
      • 2010-11-06
      • 2015-01-04
      • 2015-10-23
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多