繁体   English   中英

从非线程安全类实例化线程安全类

[英]Instanciating a thread-safe class from a non thread-safe class

在不是线程安全的类中,必须避免使用类变量,因为它们可以被执行上下文的不同线程共享。 但是,如果实例化一个本身具有类变量的外部类,这些变量是否是线程安全的?

在此示例中,在线程之间共享计数器变量是否存在任何风险?

class MyNotThreadSafeClass()
{
   private integer sharedvariable;
   public void callAnOtherClass()
   {
      myClass o = new myClass();
      System.out.println(o.increment(counter));
   }
}

class myClass()
{
   private integer counter;
   public void increment() { return(counter++); }  
}

如果您有一个主意,谢谢(在此线程安全主题中文档不是很清楚)。

这是可行的,因为您永远不会将o传递给另一个线程。 因此,没有其他线程可以访问此实例。

常规模式是:如果在多个线程之间共享一个实例,则需要进行某种同步。

如果您不共享实例,那么是否有更多线程也没关系。

暂无
暂无

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

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