繁体   English   中英

线程安全,静态方法和一些奇怪的代码

[英]Thread safety, static methods and some weird code

我最近偶然发现了类似下面的代码。 这段代码确实很干净。 看起来像单身,但不是因为没有私人构造函数。 我知道这肯定会给出线程安全问题给予足够大的负载。 特别给定的类实例。 有人可以用这段代码指出线程安全问题吗?

public class AClass extends AnotherClass {

  public static final AClass instance = new AClass();

  public static SomeObject doSomethingThatCallsAService(Params params) {
       return methodThatCallsService(params, instance);
  }

  public static SomeObject methodThatCallsService(Params params, AClass instance) {
      -----call service here ---------
      instance.doSomethingElse();
  }

  private void doSomethingElse() {
      --- do some trivial work -----
  }
}

假定对象不携带状态,则无论线程安全性如何,无论调用方法的线程数是多少还是对单例对象都有引用。

类中的所有方法(包括静态方法)都不使用任何共享数据。 因此,无论是调用单例对象上的方法还是传递实例,都不需要访问要同步的任何内容。

作为代码是, 可能需要的同步的唯一数据是params在参数methodThatCallsService ,这是仅当此方法修改数据和多个线程保持到同一基准Params对象。

但就这个类而言,即使单例实现容易受到攻击,它也是线程安全的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM